【发布时间】:2016-12-08 08:58:20
【问题描述】:
我正在尝试根据存储在向量中的列中的 11 个不同级别过滤和绘制 11 个不同的图表。
对于一个快速的、可重现的示例,这基本上是我尝试过的:
library(dplyr)
library(ggplot)
positions = c("forward", "defense")
df <- data.frame(player = c("Sergio Ramos", "Lionel Messi",
"Dani Alvez", "Christiano Ronaldo"),
position = c("forward", "defense", "defense", "forward"),
goals = c(12, 8, 2, 23))
for (i in 1:length(positions)) {
df %>%
filter(position == positions[i]) %>%
print(ggplot(aes(x = player, y = goals)) +
geom_bar(stat = "identity"))
}
如果我只是将过滤器包装在 print() 中并运行它,我会得到两个子集:
player position goals
1 Sergio Ramos forward 12
2 Christiano Ronaldo forward 23
player position goals
1 Lionel Messi defense 8
2 Dani Alvez defense 2
但是上面的代码给了我
错误:ggplot2 不知道如何处理 uneval 类的数据。
如果我在没有循环的情况下运行代码,它的图形效果很好。
我希望能够遍历变量并将它们全部发布到 Rmd 中或全部保存。有人可以解释为什么上述方法不起作用吗?谢谢!
【问题讨论】:
-
这个
ggplot(df, aes(x = player, y = goals)) + geom_bar(stat = 'identity') +facet_wrap(~position)?