检查字符串在R中是否至少包含一个数字字符
我尝试了以下方法,但是,当字符串包含任何其他字符(例如空格)时出错。正如您在下面看到的,有一个名为“subway 10”的字符串,它确实包含数字字符,但是由于空格的原因,它被报告为false 我的字符串可能包含任何其他字符,但如果它至少包含一个数字,我希望从数组中获取这些字符串的索引检查字符串在R中是否至少包含一个数字字符,r,regex,R,Regex,我尝试了以下方法,但是,当字符串包含任何其他字符(例如空格)时出错。正如您在下面看到的,有一个名为“subway 10”的字符串,它确实包含数字字符,但是由于空格的原因,它被报告为false 我的字符串可能包含任何其他字符,但如果它至少包含一个数字,我希望从数组中获取这些字符串的索引 > mywords<- c("harry","met","sally","subway 10","1800Movies","12345") > numbers <- grepl("^[[:d
> 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"
>mywords数字和字母
>mywords[xor((字母|数字),两者)]#字母和数字混合
[1] “1800部电影”
使用\\d
对我有效:
grepl("\\d", mywords)
[1] FALSE FALSE FALSE TRUE TRUE TRUE
[[:digit:]
也是如此:
grepl("[[:digit:]]", mywords)
[1] FALSE FALSE FALSE TRUE TRUE TRUE
正如@nrussel所提到的,您正在测试字符串是否只包含字符串开头到结尾之间的数字
您还可以检查字符串是否包含字母以外的内容,使用括号内的^
对字母求反,但“其他内容”不仅仅是数字:
grepl("[^a-zA-Z]", mywords)
[1] FALSE FALSE FALSE TRUE TRUE TRUE
我可能遗漏了一些东西,但是为什么不使用
“[[:digit:][]+”
?问题是您使用的锚^
&$
;e、 g.“^[:digit:][]+$”
正在检查字符串是否只包含数字。