将变量名传递给R中的函数

问题描述 投票:28回答:4

我已经注意到,有很多软件包允许您传递在调用函数的上下文中甚至可能无效的符号名称。我想知道这是如何工作的,以及如何在自己的代码中使用它?

这里是ggplot2的示例:

a <- data.frame(x=1:10,y=1:10)
library(ggplot2)
qplot(data=a,x=x,y=y)

xy在我的命名空间中不存在,但是ggplot理解它们是数据帧的一部分,并将其求值推迟到有效的上下文中。我尝试做同样的事情:

b <- function(data,name) { within(data,print(name)) }
b(a,x)

但是,这失败了:

Error in print(name) : object 'x' not found

我在做什么错?如何运作?

Note:这是notPass variable name to a function in r]的重复>

我已经注意到,有很多软件包允许您传递在调用函数的上下文中甚至可能无效的符号名称。我想知道这是如何工作的,以及如何在我的...

r lazy-evaluation
4个回答
25
投票

我知道这是一个较旧的线程,但这是我过去提到的线程。我最近发现了我认为是传递变量名称的更好方法。所以我想我会把它包括在内。我希望这对某人有帮助。


14
投票

例如,您可以使用match.call执行此操作:


3
投票

如果您将变量名放在引号之间


0
投票

非常旧的线程,但是您也可以使用get命令。它似乎对我来说更好。

© www.soinside.com 2019 - 2024. All rights reserved.