Here's one way (should work for data frames, too):
mlist <- paste("m", 1:5, sep="")
for (i in 1:5) assign(mlist[i], matrix(runif(4), 2, 2))
do.call("rbind", mget(mlist, .GlobalEnv))
[,1] [,2] [1,] 0.33846095 0.09494054 [2,] 0.65229451 0.26009002 [3,] 0.53969914 0.66481544 [4,] 0.59316498 0.36125843 [5,] 0.24005411 0.01010594 [6,] 0.06878842 0.93929806 [7,] 0.02618064 0.06243190 [8,] 0.08144251 0.04331587 [9,] 0.95216684 0.61066435 [10,] 0.03712678 0.95809995 get() takes a character vector as the first argument, and you passed it a list with one component (a character vector). Even if you pass mlist to get(), it will only get the first one. Andy
From: roger bos
I have around 200 data frames I want to rbind in a vectorized way.
The object names are:
m302
m303
...
m500
So I tried:
mlist <- paste("m",302:500,sep="")
dat <- do.call("rbind", get(list(mlist)))
and I get "Error in get(x, envir, mode, inherits) : invalid
first argument"
I know "rbind" is valid because
dat <- rbind(m302, m303, m304, m305)
works, I am just too lazy to type it out to m500.
I also tried it without the get() portion, but then dat ends up being
a column with just the names of the objects, not the objects
themselves.
Thanks in advance for showing me the errors in my attempts.
Roger
______________________________________________ R-help at stat.math.ethz.ch mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html