【发布时间】:2018-08-08 13:51:32
【问题描述】:
最初我想在 for 循环中使用 ggplot2,但它不起作用,因为不是保存第一个图,而是在循环的第二次迭代后保存了第二个图。下面的代码说明了这一点。不必使用 for 循环来重现此错误。如果我像这样执行代码,它可以工作:
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 分别保存第二个图形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 来重现第一个代码 sn-p?当我使用i = 1 和j = 2 并将第二个“迭代”中的i 替换为j 时,它工作正常。我错过了什么吗?我该如何解决这个问题?
【问题讨论】: