我注意到相当多的包允许您传递在调用函数的上下文中甚至可能无效的符号名称。我想知道这是如何工作的以及如何在我自己的代码中使用它?
这是 ggplot2 的示例:
a <- data.frame(x=1:10,y=1:10)
library(ggplot2)
qplot(data=a,x=x,y=y)
x
并且y
不存在于我的命名空间中,但 ggplot 知道它们是数据框的一部分,并将它们的评估推迟到它们有效的上下文中。我试过做同样的事情:
b <- function(data,name) { within(data,print(name)) }
b(a,x)
然而,这惨遭失败:
Error in print(name) : object 'x' not found
我究竟做错了什么?这是如何运作的?
注意:这不是将变量名称传递给 r 中的函数的副本