解析和替换如何工作以允许访问对象名称?

J.R*_*uez 4 r

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

myfunc <- function(v1) {
    deparse(substitute(v1))
}

myfunc(foo)
[1] "foo"
Run Code Online (Sandbox Code Playgroud)

我在 R 中输入?deparse?substitute并获得以下结果:

deparse = Turn unevaluated expressions into character strings.
Run Code Online (Sandbox Code Playgroud)

substitute = returns the parse tree for the (unevaluated) expression expr, 
substituting any variables bound in env.
Run Code Online (Sandbox Code Playgroud)

我似乎不太懂这种语言。有人能够简化这些描述的技术方面,以便我能够开始理解这两个函数如何协同工作,让我们能够做一些很酷的事情,比如访问对象的变量名?

Bry*_*gin 5

我也为此苦苦挣扎。myplot()的例子很有帮助?substitute。在那里,他们定义:

myplot <- function(x, y)
plot(x, y, xlab = deparse(substitute(x)),
   ylab = deparse(substitute(y)))
Run Code Online (Sandbox Code Playgroud)

呼叫

myplot(x=1:10, y = rnorm(10))
Run Code Online (Sandbox Code Playgroud)

给出

在此输入图像描述

而替代方案

x = 1:10
y = rnorm(10)
plot(x, y, xlab = x, ylab = y)
Run Code Online (Sandbox Code Playgroud)

给出

在此输入图像描述

希望这能表明deparse(substitute())其用途。在该plot版本中,xlab和参数是用于生成和ylab的任何内容的输出。知道将“实际参数的字符串版本传递给函数” for和。(引自)xymyplotxlabylab?substitute