我想测试一个字符串向量并确定每个字符串是否包含数字或符号元素(即我想知道一个字符串是否不仅仅是字母字符和空格)。我已经在这里解决了,但想知道是否有更有效的方法(在 R 正则表达式中)。
x <- c("ff d fdf4f", "fve dvgf", "vfev!", "rcvce rc&")
nchar(gsub("[a-zA-Z]|\\s+", "", x)) > 0
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
改用grep
:
grep("[^a-zA-Z\\s]+", x, value=FALSE)