[R] array of lists? is this the best way to do it?

Gabor Grothendieck ggrothendieck at gmail.com
Tue Dec 6 15:05:22 CET 2005


On 12/6/05, John McHenry <john_d_mchenry at yahoo.com> wrote:
> [Q.] How to create an array of lists, or structures the most elegant way?
>
>  There have been questions in the past but none too recently...I want to know if the following looks OK to you guys or if there is a better way to create an array of lists:
>
>   # PREAMBLE ... JUST TO GET THINGS GOING
>  makeList<- function(data, anythingElse) {
>  rval <- list( data = data,
>    anythingElse = anythingElse
>   )
>  class(rval) <- "myListOfArbitraryThings"
>  return(rval)
>  }
>  # make up some arbitrary data
>  payload<- list( as.matrix(cbind(1,1:3)),
>   10:15,
>   data.frame(cbind(x=1, y=1:10), fac=sample(LETTERS[1:3], 10, repl=TRUE))
>        )
>
>   # HERE'S THE ARRAY-CONSTRUCTION PART THAT I WANT CRITIQUED:
>  n<- 3 # number of lists in the array of lists
>  v<- vector("list", n) # <--- IS THIS THE BEST WAY TO CREATE AN ARRAY OF LISTS?
>  # fill the array with essentially arbitrary stuff:
>  for (i in 1:n) v[[i]]<- makeList(payload[[i]], i)

You could use lapply to avoid having to set up the empty list:

lapply(1:n, function(i) makeList(payload[[i]], i))  # untested




More information about the R-help mailing list