在带有ggplot2
的R中,这两行似乎做同样的事情:
qplot(data=diamonds, carat, price)
qplot(data=diamonds, get("carat"), get("price"))
但我不明白它们是如何工作的......
R如何理解第一种情况中carat
引用的内容以及第二种情况中get("carat")
引用的内容?如果我只是尝试自己访问carat
或get("carat")
,我会(不出所料)
> carat
Error: object 'carat' not found
> get("carat")
Error in get("carat") : object 'carat' not found
在幕后,ggplot2
如何设置绑定,使这些优雅的调用语义“正常工作”,更具体地说,我将如何自己实现这种排序?我试图阅读源代码,但我很难理解它。
答案 0 :(得分:6)
ggplot2的创建者Hadley在devtools wiki上有一个关于构建自己版本的subset
函数的精彩条目 - 它也接受了数据参数。我学到了很多东西,并且我愿意打赌,文章中建立的机制与ggplot
非常相似。