检查参数是否已通过但不存在

时间:2014-05-28 22:41:24

标签: r

在我的函数中,我想确定作为参数传递的变量的存在,例如:

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"

有没有办法实现这种行为?

1 个答案:

答案 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"