Mathew Vickers
2012-Jul-13 23:51 UTC
[R] R combining many vectors of predictable name into one date frame
G'day R (power) users, I have a many vectors, called: ib1 ib2 ib3 ... ib100 and I would like them in one data frame (df) such that:> dfib1 ib2 ib3 ib4 ..... ib100 x x x x x x x x x x x x x x x I have attempted: hold.list <- list(objects(pattern="ib")) df <- data.frame(hold.list) but that didn't work also: do.call(rbind, (objects(pattern="ib"))) and that also didn't work. I tried a whole pile of other things, where I also failed. The number of vectors might differ each time I want to make the data frame, so that in the example above, I have ib1 : ib100, but next time, I might only have ib1 : ib2 Below is my (probably somewhat embarrassing) example script for generating the vectors in the first place. Commented out toward the end are a few attempts at doing the job I wanted to do. temp <- runif(100) tripID <- rep(1:10, 10) uni <- rep(1:4, 25) temp <- data.frame(temp, tripID, uni) trips <- unique(temp$tripID) uni <- unique(temp$uni[temp$tripID==trips[1]]) for (jj in 1:length(uni)){ a <- c() for (ii in 1:10){ a <- c(a, IQR(temp$temp[temp$uni %in% sample(uni,jj)])) assign(paste("ib",jj,sep=""), a) # ib is short for ibuttons. The number is how many were used to calc IQR } # hold.list <- list(objects(patter="ib")) # trip <- data.frame(list=hold.list # I am trying to put everything into a dataframe # do.call("rbind", list=hold.list) # do.call("rbind", list(objects(pattern="ib"))) } thanks heaps if you can help. And sorry if this is mostly garble. This is my first crack at soliciting help from the list. cheers, mat -- Mathew Vickers PhD Student James Cook University CSRIO Australia, mate. [[alternative HTML version deleted]]
Rui Barradas
2012-Jul-15 12:01 UTC
[R] R combining many vectors of predictable name into one date frame
Hello, Try the following. ib1 <- 1:10 ib2 <- rnorm(10) hold.list <- objects(pattern="ib") df <- sapply(hold.list, get) df Note that you don't need list(), and that sapply() returns a data.frame if possible. Also, 'df' is the name of an R function, use something else like 'df1'. Hope this helps Rui Barradas Em 14-07-2012 00:51, Mathew Vickers escreveu:> G'day R (power) users, > > I have a many vectors, called: > > ib1 > ib2 > ib3 > ... > ib100 > > and I would like them in one data frame (df) such that: > >> df > > ib1 ib2 ib3 ib4 ..... ib100 > x x x x x > x x x x x > x x x x x > > I have attempted: > > hold.list <- list(objects(pattern="ib")) > df <- data.frame(hold.list) > > but that didn't work > > also: > do.call(rbind, (objects(pattern="ib"))) > > and that also didn't work. I tried a whole pile of other things, where I > also failed. > > > The number of vectors might differ each time I want to make the data frame, > so that in the example above, I have ib1 : ib100, but next time, I might > only have ib1 : ib2 > > Below is my (probably somewhat embarrassing) example script for generating > the vectors in the first place. Commented out toward the end are a few > attempts at doing the job I wanted to do. > > > temp <- runif(100) > tripID <- rep(1:10, 10) > uni <- rep(1:4, 25) > temp <- data.frame(temp, tripID, uni) > > trips <- unique(temp$tripID) > uni <- unique(temp$uni[temp$tripID==trips[1]]) > > for (jj in 1:length(uni)){ > a <- c() > for (ii in 1:10){ > a <- c(a, IQR(temp$temp[temp$uni %in% sample(uni,jj)])) > assign(paste("ib",jj,sep=""), a) # ib is short for ibuttons. The number > is how many were used to calc IQR > } > # hold.list <- list(objects(patter="ib")) > # trip <- data.frame(list=hold.list # I am trying to put everything into > a dataframe > # do.call("rbind", list=hold.list) > # do.call("rbind", list(objects(pattern="ib"))) > } > > > thanks heaps if you can help. And sorry if this is mostly garble. This is > my first crack at soliciting help from the list. > > cheers, > > mat > >