我的问题是关于以下代码:

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))




r - 如何进行除杂和替换工作以允许访问对象名称?-LMLPHP

而替代

x = 1:10
y = rnorm(10)
plot(x, y, xlab = x, ylab = y)




r - 如何进行除杂和替换工作以允许访问对象名称?-LMLPHP

希望这可以显示deparse(substitute())的用途。在plot版本中,xlabylab参数是用于生成xy的任何内容的输出。 myplot知道将xlabylab的“实际参数的字符串版本传递给函数”。 (引自?substitute

10-08 17:42