如何检查字符串中是否包含至少一个数字字符

sal*_*ter 4 r

我已尝试过以下内容,但是,当字符串包含任何其他字符(例如空格)时,它会出错.正如您在下面看到的,有一个名为"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"
Run Code Online (Sandbox Code Playgroud)

Cat*_*ath 18

\\d为我使用的作品:

grepl("\\d", mywords)
[1] FALSE FALSE FALSE  TRUE  TRUE  TRUE
Run Code Online (Sandbox Code Playgroud)

所以[[:digit:]]:

grepl("[[:digit:]]", mywords)
[1] FALSE FALSE FALSE  TRUE  TRUE  TRUE
Run Code Online (Sandbox Code Playgroud)

正如@nrussel所提到的,你正在测试字符串是否只包含字符串开头^到结尾之间的数字$.

您还可以检查字符串是否包含除字母以外的内容,使用^内部括号来否定字母,但"其他内容"不仅仅是数字:

grepl("[^a-zA-Z]", mywords)
[1] FALSE FALSE FALSE  TRUE  TRUE  TRUE
Run Code Online (Sandbox Code Playgroud)