R grepl找到一个纯数字

时间:2013-06-12 16:07:50

标签: regex r

可能是一个非常基本的问题,但它让我觉得我不能轻易找到解决方案......所以我想我应该明白那些明智的人的智慧......

我希望能够返回TRUE或FALSE,如果字符串是纯数字而不是仅包含数字......我得到的最接近的是

grepl("[0-9]","99393")
grepl("[0-9]","blah")

但是这不起作用,因为当它应为FALSE时,以下内容返回为TRUE

grepl("[0-9]","993T3")

任何帮助都会受到赞赏!

编辑

正如joran指出的那样,重要的是要注意字符串只包括整数和字母,即不包括小数点或逗号...

3 个答案:

答案 0 :(得分:6)

为什么不使用强大的内部方法来强制转换为整数或数字?

如果无法完成,它将返回NA。如果您想要合理的结果,请使用is.na

is.na( as.integer( "993T3" ) )
# [1] TRUE

is.na( as.integer( "99393" ) )
# [1] FALSE

请记住,如果您正在使用as.numeric处理浮点数,否则您将使用as.integer

截断数字的浮点部分

答案 1 :(得分:5)

您应该指定整个正则表达式并指定开头(^)和字符串结尾($)。例如:

> grepl("^[[:digit:]]+$","993T3")
[1] FALSE

如果您想了解有关regexp的更多信息,请查看http://en.wikibooks.org/wiki/R_Programming/Text_Processing#Regular_Expressions

答案 2 :(得分:0)

!grepl("[^0-9]","993T3")怎么样?

编辑:这将为空字符串返回TRUE。为避免这种情况,请使用

!grepl("[^0-9]", x) & nzchar(x)

表示字符类型的矢量x