我的问题是关于以下代码:
myfunc <- function(v1) {
deparse(substitute(v1))
}
myfunc(foo)
[1] "foo"
我在R中输入
?deparse
和?substitute
并获得以下内容:deparse = Turn unevaluated expressions into character strings.
和
substitute = returns the parse tree for the (unevaluated) expression expr,
substituting any variables bound in env.
我似乎不太懂这种语言。有人能够简化这些描述的技术方面,以便让我开始理解这两个函数如何协同工作,使我们能够做一些很酷的事情,例如访问对象的变量名吗?
最佳答案
我也为此感到挣扎。 myplot()
中的?substitute
示例很有帮助。他们在那里定义:
myplot <- function(x, y)
plot(x, y, xlab = deparse(substitute(x)),
ylab = deparse(substitute(y)))
呼唤
myplot(x=1:10, y = rnorm(10))
给
而替代
x = 1:10
y = rnorm(10)
plot(x, y, xlab = x, ylab = y)
给
希望这可以显示
deparse(substitute())
的用途。在plot
版本中,xlab
和ylab
参数是用于生成x
和y
的任何内容的输出。 myplot
知道将xlab
和ylab
的“实际参数的字符串版本传递给函数”。 (引自?substitute
)