2

我想测试一个字符串向量并确定每个字符串是否包含数字或符号元素(即我想知道一个字符串是否不仅仅是字母字符和空格)。我已经在这里解决了,但想知道是否有更有效的方法(在 R 正则表达式中)。

x <- c("ff d fdf4f", "fve dvgf", "vfev!", "rcvce rc&")
nchar(gsub("[a-zA-Z]|\\s+", "", x)) > 0
4

2 回答 2

3

grepl以及寻找不符合您想要的角色似乎有效

grepl("[^a-zA-Z[:space:]]", x)

这给出了与原始代码相同的输出

> x <- c("ff d fdf4f", "fve dvgf", "vfev!", "rcvce rc&")
> nchar(gsub("[a-zA-Z]|\\s+", "", x)) > 0
[1]  TRUE FALSE  TRUE  TRUE
> grepl("[^a-zA-Z[:space:]]", x)
[1]  TRUE FALSE  TRUE  TRUE
于 2012-11-26T02:35:10.700 回答
2

改用grep

grep("[^a-zA-Z\\s]+", x, value=FALSE)
于 2012-11-26T02:35:04.393 回答