首页 > 解决方案 > 将可选输入传递给 r 中的函数时如何解析

问题描述

我正在研究 R 中用于数据科学的第一个示例,我看到以下代码:

ggplot(data=mpg) +
  geom_point(mapping = aes(x=displ,y=hwy))

我的理解是这mpg是全球定义的。这里的细节有点模糊。

无论如何,我可以忍受。我真正的问题是下一行。特别是,如何在使用displhwy有效。如果我只运行aes构造函数调用(构造函数?函数?)displ并且hwy在结果输出中似乎是字符串。在大多数其他语言中,我认为这会导致错误,因为displ并且hwy无法在当前工作区中解决(例如a=hwy,在 R 中a<-hwy会导致错误)。

R是否有一些行为,其中任何看起来像字符串(即displ但不是4.0示例)但与变量或函数不匹配的变量在传入时成为被调用函数/构造函数中的字符串,或者通过equals(如情况在这里)或者甚至更普遍地作为函数的输入????这是怎么回事?

奖励:如果您习惯了其他语言,是否有很好的资源来理解这一点以及任何其他在 R 中可能看起来很奇怪的怪癖?

标签: r

解决方案


R 允许在评估参数方面有很大的灵活性,并且像这样的包ggplot2可以利用它。函数可以看到作为参数传递的表达式,然后以特殊的方式对其进行评估。 ggplot2这样做,所以当geom_point()计算表达式时displ,它会在一个环境中执行此操作,该环境将数据框mpg附加在其他所有内容之前,并在那里找到列。


推荐阅读