我遇到了一个关于如何/何时变量的有趣问题 在ggplot结构中进行评估。
我能想到的最简单的例子是重现这个 跟随(应该将点1到10放在图上):
df=data.frame(x=1:10,y=1:10)
panel=ggplot() + xlim(-1,11) + ylim(-1,11)
for (i in c(1:10)) {
panel=panel+geom_point(aes(x=df$x[i],y=df$y[i]))
}
print(panel)
这将产生一个点的图,即 i = 10 的图 如果我给 i 另一个值(在1到10的范围内)并重复 打印(面板)命令然后将绘制该特定点。
如果我 i< - c(1:10),然后是打印(面板),则会绘制所有十个点,就像我发布了矢量化版本:
ggplot(aes(x=x,y=x),data=df)+geom_point()
在我看来, i 仅在发出打印(面板)命令时进行评估。
我在一个非常复杂的情节中遇到了这个问题,其中 i 循环遍历列表的元素,而矢量化版本则不实用。
所以,她的问题是: 有没有办法强制ggplot为循环中的每个步骤评估 i ?
答案 0 :(得分:7)
aes()
特别阻止了驱逐。如果您想要评估,可以使用标准评估版aes_()
panel=ggplot() + xlim(-1,11) + ylim(-1,11)
for (i in c(1:10)) {
panel=panel+geom_point(aes_(x=df$x[i],y=df$y[i]))
}
print(panel)