如何尝试在R中匹配错误的输入格式? function1
向函数传入如何尝试在R中匹配错误的输入格式? function1,r,input,types,format,R,Input,Types,Format,向函数传入11会导致解释器出错,而不是函数调用。您需要使用,分隔参数,但即使这样,您也会得到一个错误,因为您没有设置为处理多个参数。您可以调用a(c(1,1))传入一个向量(这将起作用) 1\u 1不是有效标识符,因此您再次遇到解释器错误。将1 1传递给函数会导致语法错误,而不是格式错误。您无法捕获语法错误。。。(嗯,实际上有一些方法可以做到这一点,但我真的不鼓励…)这些方法是什么?为什么不鼓励呢?例如,如果您eval(parse())代码段,您可以捕获语法错误。但是如果你写了一段错误的代码,返
11
会导致解释器出错,而不是函数调用。您需要使用,
分隔参数,但即使这样,您也会得到一个错误,因为您没有设置为处理多个参数。您可以调用a(c(1,1))
传入一个向量(这将起作用)
1\u 1
不是有效标识符,因此您再次遇到解释器错误。将1 1
传递给函数会导致语法错误,而不是格式错误。您无法捕获语法错误。。。(嗯,实际上有一些方法可以做到这一点,但我真的不鼓励…)这些方法是什么?为什么不鼓励呢?例如,如果您eval(parse())
代码段,您可以捕获语法错误。但是如果你写了一段错误的代码,返回NaN是没有意义的,代码必须是正确的,代码输入可能是错误的。。。问题是,你怎么可能把a(11)
?如果11
是用户输入,为什么不将其放入字符串(即“11”
)中,然后在进行平方运算之前调用as.double?基本上,任何无效的输入都会以这种方式被捕获。。。那么,最后,你想完成什么?目的是检查用户的输入是否正确。仍然不太了解eval(parse())的用法。是否可以将默认语法错误消息修改为NaN?用户如何在两个括号之间输入“到达” ? 您是否只是将字符串“a(“+userinput+”)
连接起来?如果是这样,只需执行“a(“+userinput+”)”
将函数代码从n^2
更改为as.double(n)^2
。。。
function1 <- function(n) { n^2 }
a <- function(n) {
tryCatch(function1(n),
error = function(e) { return(NaN) })
}