我必须创建一个函数来检测输入中是否存在任何非数值。为此我写了这段代码
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
但是我希望它以第一种形式工作。任何有关这方面的帮助将不胜感激
答案 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