如何疏远&替换工作以允许访问对象名称?

时间:2016-06-05 20:20:42

标签: r

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

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.

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

1 个答案:

答案 0 :(得分:4)

我也很努力(d)。来自myplot()的{​​{1}}示例很有帮助。在那里,他们定义:

?substitute

调用

myplot <- function(x, y)
plot(x, y, xlab = deparse(substitute(x)),
   ylab = deparse(substitute(y)))

给出

enter image description here

而替代

myplot(x=1:10, y = rnorm(10))

给出

enter image description here

希望这能显示x = 1:10 y = rnorm(10) plot(x, y, xlab = x, ylab = y) 的用途。在deparse(substitute())版本中,plotxlab参数是用于生成ylabx的任何内容的输出。 y知道传递&#34;函数实际参数的字符串版本&#34;适用于myplotxlab。 (引自ylab