检测字符串中的数值

时间:2015-12-15 07:39:59

标签: r

我必须创建一个函数来检测输入中是否存在任何非数值。为此我写了这段代码

test<-function(x){
  if(is.numeric(x)){
    return(T)
  }else{
    return(F)
  }
}

然而,当我用说

进行测试时
> test(a123)
Error in test(a123) : object 'a123' not found

但是当我使用引号

时它会起作用
> test("a123")
[1] FALSE

但是我希望它以第一种形式工作。任何有关这方面的帮助将不胜感激

1 个答案:

答案 0 :(得分:0)

test(a123)无效。您必须先将用户输入存储在对象中,然后将其传递给您的函数。

请注意,使用您的功能test(123) 也会返回 FALSE! (即使您按照评论中的建议插入deparse(substitute(x))

执行测试的一种更简洁,更正确的方法是grep("[^0-9]", x),如果字符串x包含任何非数字的内容,则返回1,否则返回0。

如果你真的想让你的功能在你所称的第一种形式中起作用(但我认为这不是一个好主意,因为它不能接受任何对象并且似乎没有在R脚本中有任何用处):

test<-function(x){
  x<-deparse(substitute(x))
  grep("[^0-9]",x)
}

> test(123)
integer(0)
> test(a123)
[1] 1