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 に答える