最初,我想在for循环中使用ggplot2,因为它没有保存第一个图,而是在循环的第二次迭代后保存了第二个图,所以它不起作用。以下代码说明了这一点。不必使用for循环来重现此错误。如果我执行这样的代码,它将起作用:
complex(gammainc(...))
如果library(ggplot2)
df <- data.frame(x = c(1,2,3,4,5),
y1 = c(10,55,32,78,47),
y2 = c(-1.3,-2.5,-4.1,-1.7,-3.6))
hori <- c("y1", "y2")
pmse <- list()
pmse[[1]] <- ggplot(data = df, aes(x = x, y = eval(parse(text = paste(hori[1])))))+
geom_line()+
labs(title = paste(hori[1]))+
ylab(paste(hori[1]))
pmse[[2]] <- ggplot(data = df, aes(x = x, y = eval(parse(text = paste(hori[2])))))+
geom_line()+
labs(title = paste(hori[2]))+
ylab(paste(hori[2]))
pmse[[1]]
pmse[[2]]
和1
被2
取代,而i
和i = 1
分别被保存了两次。不知何故,第一个情节似乎被覆盖了:
i = 2
如何使用变量(我覆盖)而不是数字pmse <- list()
i <- 1
pmse[[i]] <- ggplot(data = df, aes(x = x, y = eval(parse(text = paste(hori[i])))))+
geom_line()+
labs(title = paste(hori[i]))+
ylab(paste(hori[i]))
i <- 2
pmse[[i]] <- ggplot(data = df, aes(x = x, y = eval(parse(text = paste(hori[i])))))+
geom_line()+
labs(title = paste(hori[i]))+
ylab(paste(hori[i]))
pmse[[1]]
pmse[[2]]
和1
来重现第一个代码段?当我使用2
和i = 1
并将第二个“迭代”中的j = 2
替换为i
时,就可以了。我想念什么吗?我该如何解决?
答案 0 :(得分:0)
我建议重新考虑与ggplot相关的数据的组织方式,并充分利用facet_wrap
df %>%
gather(key, value, -x) %>%
ggplot(., aes(x=x, y=value)) +
geom_line() +
facet_wrap(~key)