Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
检查字符串在R中是否至少包含一个数字字符_R_Regex - Fatal编程技术网

检查字符串在R中是否至少包含一个数字字符

检查字符串在R中是否至少包含一个数字字符,r,regex,R,Regex,我尝试了以下方法,但是,当字符串包含任何其他字符(例如空格)时出错。正如您在下面看到的,有一个名为“subway 10”的字符串,它确实包含数字字符,但是由于空格的原因,它被报告为false 我的字符串可能包含任何其他字符,但如果它至少包含一个数字,我希望从数组中获取这些字符串的索引 > mywords<- c("harry","met","sally","subway 10","1800Movies","12345") > numbers <- grepl("^[[:d

我尝试了以下方法,但是,当字符串包含任何其他字符(例如空格)时出错。正如您在下面看到的,有一个名为“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"
>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:][]+$”
正在检查字符串是否只包含数字。