我尝试过以下操作,但是,当字符串包含任何其他字符(例如空格)时,它会出错。如下所示,有一个名为“subway 10”的字符串,它包含数字字符,但由于空间的原因,它被报告为false。
我的字符串可能包含任何其他字符,但如果它包含至少一个数字,我想从数组中获取这些字符串的索引。
> mywords<- c("harry","met","sally","subway 10","1800Movies","12345")
> numbers <- grepl("^[[:digit:]]+$", mywords)
> letters <- grepl("^[[:alpha:]]+$", mywords)
> both <- grepl("^[[:digit:][:alpha:]]+$", mywords)
>
> mywords[xor((letters | numbers), both)] # letters & numbers mixed
[1] "1800Movies"
答案 0 :(得分:13)
使用\\d
对我有用:
grepl("\\d", mywords)
[1] FALSE FALSE FALSE TRUE TRUE TRUE
[[:digit:]]
也是如此:
grepl("[[:digit:]]", mywords)
[1] FALSE FALSE FALSE TRUE TRUE TRUE
正如@nrussel所提到的那样,如果字符串只包含字符串的开始^
到结尾$
之间的数字,那么您正在测试。
您还可以检查字符串是否包含除字母之外的其他内容,使用括号内的^
来否定字母,但接着&#34;其他内容&#34;不仅仅是数字:
grepl("[^a-zA-Z]", mywords)
[1] FALSE FALSE FALSE TRUE TRUE TRUE