在R语言中进行语言计算

8

如果我想在R中打印表示对象的符号,我可以使用quote()函数:

> X <- list()
> print(quote(X))
X
>

然而,如果我有这个函数
h <- function(Y){
     quote(Y)
}

那么

> h(X)
Y
>

在R中是否有可能编写这样一个函数:
> h(X)
X

?

3个回答

12
> f = function(x) print(deparse(substitute(x)))
> f(asd)
[1] "asd"
> 

为什么?就像你已经发现的那样,quote()告诉R不要评估代码块(而它会使用Y进行评估)。substitute()的行为不同;在?substitute中有一个很好的例子。


6
h <- function(x) match.call()[['x']]

h(X)
X

0

substitute 也可以在不需要额外调用的情况下工作:

h <- function(x) substitute(x)
h(X)
X

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接