我正在尝试在循环中制作一组 ggplots 并显示它们。我正在尝试使用%>%运算符。这是一个玩具示例,它绘制了从 1 到 10 的点,每个点都有不同的标题。
library(magrittr)
library(ggplot2)
data1 <- data.frame('x' = 1:10, 'y' = 1:10)
for (index in 1:10){
data1 %>%
ggplot(aes(x = x, y = y)) +
geom_point() +
ggtitle(paste("plot ",as.character(index)))
}
Run Code Online (Sandbox Code Playgroud)
现在,下面的代码可以工作并生成 10 个图,每个图都有不同的标题
library(magrittr)
library(ggplot2)
data1 <- data.frame('x' = 1:10, 'y' = 1:10)
for (index in 1:10){
print(ggplot(data = data1, aes(x = x, y = y)) +
geom_point() +
ggtitle(paste("plot ",as.character(index))))
}
Run Code Online (Sandbox Code Playgroud)
但是,我想使用%>%运算符来生成一系列图。我%>% print()在标题末尾尝试过,它运行但不生成用于显示的图。然而
for (index in 1:10){
data1 %>%
print(data = .,ggplot(aes(x = x, y = y)) +
geom_point() +
ggtitle(paste("plot ",as.character(index))))
}
Run Code Online (Sandbox Code Playgroud)
产生错误
Error: ggplot2 doesn't know how to deal with data of class uneval
Run Code Online (Sandbox Code Playgroud)
有什么愚蠢的,我失踪了吗?
谢谢!
这实际上是%>%和之间的操作顺序问题+。你可以把你的ggplot东西放在一起,比如
for (index in 1:10){
data1 %>% {
ggplot(., aes(x = x, y = y)) +
geom_point() +
ggtitle(paste("plot ",as.character(index)))
} %>% print
}
Run Code Online (Sandbox Code Playgroud)
或者你可以把整个链条放在印刷品中
for (index in 1:10) {
print(data1 %>%
ggplot(aes(x = x, y = y)) +
geom_point() +
ggtitle(paste("plot ",as.character(index)))
)
}
Run Code Online (Sandbox Code Playgroud)