R 检测字符串中的数值
我必须创建一个函数来检测输入中是否存在任何非数值。为此,我编写了这段代码R 检测字符串中的数值,r,R,我必须创建一个函数来检测输入中是否存在任何非数值。为此,我编写了这段代码 test<-function(x){ if(is.numeric(x)){ return(T) }else{ return(F) } } 但当我使用引号时,它就起作用了 > test("a123") [1] FALSE 然而,我希望它在第一种形式的工作。在此方面的任何帮助都将不胜感激testa123将无法工作。您必须首先将用户输入存储在对象中,然后将其传递给函数 请注意,函数te
test<-function(x){
if(is.numeric(x)){
return(T)
}else{
return(F)
}
}
但当我使用引号时,它就起作用了
> test("a123")
[1] FALSE
然而,我希望它在第一种形式的工作。在此方面的任何帮助都将不胜感激testa123将无法工作。您必须首先将用户输入存储在对象中,然后将其传递给函数
请注意,函数test123也返回FALSE!即使您按照注释中的建议插入deparsesubstitutex
执行测试的一种较短且正确的方法是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
Use与函数同时存在:这是两个不同的东西:字符串a123和名为a123的对象。顺便说一句:如果这个函数与.numeric相同,为什么要编写这个函数呢?它只是为了验证在代码中输入值时,一个人是否错误地包含了符号或字母。想想看,如果你想检测字符中是否有数字符号,你需要一个正则表达式。试试x,grep测试应该有-。字符类尖括号中的e允许使用小数和科学记数法。
test<-function(x){
x<-deparse(substitute(x))
grep("[^0-9]",x)
}
> test(123)
integer(0)
> test(a123)
[1] 1