Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 检测字符串中的数值_R - Fatal编程技术网

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