带for循环的ggplot的奇怪行为

时间:2018-06-20 09:00:58

标签: r for-loop ggplot2

我注意到我无法解释在ggplot中使用for循环的某些事情。我知道,您不应将ggplot用于循环,但应切换为长格式。 但是,以下内容仍然很奇怪且无法解释。这是我的示例:

library(data.table)
library(ggplot2)

plouf <- data.table(ID = rep(LETTERS[1:2],each = 10), time = rep(1:10,2), exc1 = rep(c(1,1,rep(0,8)),2), exc2 =  rep(c(0,0,0,1,1,1,rep(0,4)),2) )
excvec <- c("exc1","exc2")

做我想要的情节的正确方法是:

dataplot <- melt(plouf,measure.vars = excvec)

ggplot(dataplot,aes(time,value))+
  geom_line(aes(color = as.factor(variable)))+
  facet_wrap(~ID)

enter image description here

现在,如果我想使用for循环,我只需绘制最后一列:

p <- ggplot(plouf)
for(i in 1:2)
{
  p <- p + geom_line(aes(time,get(excvec[i]),color = excvec[i]))
}
p +  facet_wrap(~ID)

enter image description here

同时手动执行相同的循环!

p <- ggplot(plouf)
p <- p + geom_line(aes(time,get(excvec[1]),color = excvec[1]))
p <- p + geom_line(aes(time,get(excvec[2]),color = excvec[2]))
p +  facet_wrap(~ID)

enter image description here

在这里,我不明白:for循环应该做完全相同的事情,但事实并非如此。为什么?

0 个答案:

没有答案