2

How can i substitute this code with a loop?

m1 <- ggplot(foo)
m2 <- ggplot(foo)
...
m9 <- ggplot(foo)

I guess i need something like get() to replace magic(), But get did not work here.

for (i in 1:9){
  magic(i) <- ggplot(foo)
}
Jonas Stein
  • 6,826
  • 7
  • 40
  • 72

3 Answers3

5

Use a list:

out <- list()

for (i in 1:9){
  out[[i]] <- ggplot(foo)
}
hadley
  • 102,019
  • 32
  • 183
  • 245
3

This will work:

p <- qplot(data = mtcars, wt, mpg)
for(i in 1:9) assign(paste0("m",i),p)
ls()
 [1] "i"  "m1" "m2" "m3" "m4" "m5" "m6" "m7" "m8" "m9" "p"
Julius Vainora
  • 47,421
  • 9
  • 90
  • 102
2

Something like this should work:

for (i in 1:9) {
  name <- paste("m", i, sep="")
  assign(name, ggplot(foo))
}
Markus
  • 131
  • 6