我的问题是关于以下代码:
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)
我似乎不太懂这种语言。有人能够简化这些描述的技术方面,以便我能够开始理解这两个函数如何协同工作,让我们能够做一些很酷的事情,比如访问对象的变量名?
我也为此苦苦挣扎。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