【发布时间】:2014-09-08 03:37:17
【问题描述】:
我真的很难理解 R 的以下行为。假设我们要定义一个函数f,它应该返回其参数是否作为变量存在;但我们想传递不带引号的参数。因此,例如要检查变量y 是否存在,我们将调用f(y)。
f <- function(x) {
xchar <- deparse(substitute(x))
exists(xchar)
}
所以我开始一个全新的 R 会话并定义 f,但没有其他变量。然后我得到 p>
f(y)
# [1] FALSE
f(z)
# [1] FALSE
f(f)
# [1] TRUE
f(x)
# [1] TRUE
前三个调用(y、z、f)给出了预期的结果。但是没有名为x的变量
exists("x")
# [1] FALSE
编辑我现在意识到这是因为使用了substitute,它将创建变量x。但是有没有办法解决这个问题?
【问题讨论】:
标签: r