从 R 中包含数字的向量元素中删除
Remove from vector elements containing a number in R
我有一些以农村财产命名的文件,如下所示:
v1 <- c("Badger", "Hill", "Farm", "1.json")
v2 <- c("Buffalo", "Pass", "Farm", "2.json")
> v1
[1] "Badger" "Hill" "Farm" "1.json"
> v2
[1] "Buffalo" "Pass" "Farm" "2.json"
我设法拆分了文件名元素,但我只想保留那些不包含任何数字的元素。所需的输出将是:
> v1
[1] "Badger" "Hill" "Farm"
> v2
[1] "Buffalo" "Pass" "Farm"
很简单,但我就是想不通。我怎样才能做到这一点?
应该这样做:
v1 = v1[!grepl("[0-9]", v1)]
v2 = v2[!grepl("[0-9]", v2)]
grepl
检测模式,正则表达式模式 [0-9]
将检测任何数字。
我们可以使用 str_subset
来自 stringr
library(stringr)
str_subset(v1, "^\D+$")
[1] "Badger" "Hill" "Farm"
str_subset(v2, "^\D+$")
[1] "Buffalo" "Pass" "Farm"
或者在base R
中可以在grep
中指定invert = TRUE
> grep("\d", v1, invert = TRUE, value = TRUE)
[1] "Badger" "Hill" "Farm"
> grep("\d", v2, invert = TRUE, value = TRUE)
[1] "Buffalo" "Pass" "Farm"
"^(?!.*({{STRING}}))"
是指定 not
的一种很好的正则表达式方式
v1 <- c("Badger", "Hill", "Farm", "1.json")
v2 <- c("Buffalo", "Pass", "Farm", "2.json")
grep("^(?!.*(\d))", v1, value = TRUE, perl = TRUE)
## [1] "Badger" "Hill" "Farm"
grep("^(?!.*(\d))", v1, value = TRUE, perl = TRUE)
## [1] "Badger" "Hill" "Farm" ```
我们可以试试这个
> grep("^\D+$", v1, value = TRUE)
[1] "Badger" "Hill" "Farm"
> grep("^\D+$", v2, value = TRUE)
[1] "Buffalo" "Pass" "Farm"
我有一些以农村财产命名的文件,如下所示:
v1 <- c("Badger", "Hill", "Farm", "1.json")
v2 <- c("Buffalo", "Pass", "Farm", "2.json")
> v1
[1] "Badger" "Hill" "Farm" "1.json"
> v2
[1] "Buffalo" "Pass" "Farm" "2.json"
我设法拆分了文件名元素,但我只想保留那些不包含任何数字的元素。所需的输出将是:
> v1
[1] "Badger" "Hill" "Farm"
> v2
[1] "Buffalo" "Pass" "Farm"
很简单,但我就是想不通。我怎样才能做到这一点?
应该这样做:
v1 = v1[!grepl("[0-9]", v1)]
v2 = v2[!grepl("[0-9]", v2)]
grepl
检测模式,正则表达式模式 [0-9]
将检测任何数字。
我们可以使用 str_subset
来自 stringr
library(stringr)
str_subset(v1, "^\D+$")
[1] "Badger" "Hill" "Farm"
str_subset(v2, "^\D+$")
[1] "Buffalo" "Pass" "Farm"
或者在base R
中可以在grep
invert = TRUE
> grep("\d", v1, invert = TRUE, value = TRUE)
[1] "Badger" "Hill" "Farm"
> grep("\d", v2, invert = TRUE, value = TRUE)
[1] "Buffalo" "Pass" "Farm"
"^(?!.*({{STRING}}))"
是指定 not
v1 <- c("Badger", "Hill", "Farm", "1.json")
v2 <- c("Buffalo", "Pass", "Farm", "2.json")
grep("^(?!.*(\d))", v1, value = TRUE, perl = TRUE)
## [1] "Badger" "Hill" "Farm"
grep("^(?!.*(\d))", v1, value = TRUE, perl = TRUE)
## [1] "Badger" "Hill" "Farm" ```
我们可以试试这个
> grep("^\D+$", v1, value = TRUE)
[1] "Badger" "Hill" "Farm"
> grep("^\D+$", v2, value = TRUE)
[1] "Buffalo" "Pass" "Farm"