我的问题是关于以下代码:
myfunc <- function(v1) {
deparse(substitute(v1))
}
myfunc(foo)
[1] "foo"
我输入了
?deparse
和 ?substitute
进入 R 并获得以下结果:deparse = Turn unevaluated expressions into character strings.
和
substitute = returns the parse tree for the (unevaluated) expression expr,
substituting any variables bound in env.
我似乎不太了解这种语言。有人能够简化这些描述的技术方面,以便我可以开始欣赏这两个函数如何协同工作以允许我们做一些很酷的事情,比如访问对象的变量名?
最佳答案
我也在为此挣扎(d)。 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
)
关于r - 解析和替换如何工作以允许访问对象名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37646382/