I am trying to create 2 line plots.
But I noticed that using a for
loop will generate two plots with y=mev2
(instead of a plot based on y=mev1
and another one based on y=mev2
).
The code below shows the observation here.
mev1 <- c(1,3,7)
mev2 <- c(9,8,2)
Period <- c(1960, 1970, 1980)
df <- data.frame(Period, mev1, mev2)
library(ggplot2)
# Method 1: Creating plot1 and plot2 without using "for" loop (hard-code)
plot1 <- ggplot(data = df, aes(x=Period, y=unlist(as.list(df[2])))) + geom_line()
plot2 <- ggplot(data = df, aes(x=Period, y=unlist(as.list(df[3])))) + geom_line()
# Method 2: Creating plot1 and plot2 using "for" loop
for (i in 1:2) {
y_var <- unlist(as.list(df[i+1]))
assign(paste("plot", i, sep = ""), ggplot(data = df, aes(x=Period, y=y_var)) + geom_line())
}
Seems like this is due to some ggplot()
's way of working that I am not aware of.
Question:
- If I want to use Method 2, how should I modify the logic?
- People said that using
assign()
is not an "R-style", so I wonder what's an alternate way to do this? Say, usinglist
?