在我的函数中,我想确定作为参数传递的变量的存在,例如:
test <- function(input) {
out="nothing";
if (exists(input)) {out="input exists";} else {out="input does not exist";}
return(out);
}
myvar=0;
test(myvar); # I expect "input exists"
test(blablabla); # I expect "input does not exist"
有没有办法实现这种行为?
答案 0 :(得分:6)
这是一种方式
test <- function(input) {
varname <- deparse(substitute(input))
out="nothing";
if (exists(varname)) {out="input exists";} else {out="input does not exist";}
return(out);
}
这里使用deparse/substitute
组合将参数值转换为字符串。然后我们可以使用标准exists()
来查看是否存在具有该名称的变量。我得到了
> test(myvar); # I expect "input exists"
[1] "input exists"
> test(blablabla); # I expect "input does not exist"
[1] "input does not exist"