[R] Splitting a set of vectors in a list (Solved )

Henrique Dallazuanna wwwhsd at gmail.com
Thu Mar 13 19:58:54 CET 2008


On 13/03/2008, John Kane <jrkrideau at yahoo.ca> wrote:
> My thanks to Henrique Dallazuanna and Phil Spector.
>  Both solutions worked well.
>  Phil suggested that an alterative to my function would
>  be
>  vect1 = sapply(mylist,'[[',1)
>  and I see that Henrique used `[` in his solution.
>
>  Can you point me to some documentation that discusses
>  these usages. I have seen them before but I have never
>  actually figured out how to use them.?

See ?Extract

>
>  Thanks.
>
>  Problem and solutions
>  ========================================================
>  mylist <- list(aa=c("cat","peach" ), bb=c("dog",
>  "apple", "iron"),
>          cc = c("rabbit", "orange", "zinc", "silk"))
>  myfun <- function(dff) dff[1]
>  vect1  <- unlist(lapply(mylist, myfun))
>
>  # Desired output
>  t(cbind( c("cat" ,  "peach" , NA, NA), bbb  <- c("dog"
>  ,  "apple" ,"iron", NA),
>  ccb <- c("rabbit" ,"orange" ,"zinc" ,  "silk" )))
>
>  # Phil Spector's approach
>  mlen = max(sapply(mylist,length))
>  eqlens = lapply(mylist,function(x)if(length(x) < mlen)
>
>  c(x,rep('',mlen-length(x))) else x)
>  do.call(rbind,eqlens)
>
>  #       "Henrique Dallazuanna" <wwwhsd at gmail.com>
>  #    I added the t()
>  t(as.data.frame(lapply(mylist, `[`,
>  1:max(unlist(lapply(mylist,
>   length))))))
>
>
>       Looking for the perfect gift? Give the gift of Flickr!
>
>  http://www.flickr.com/gift/
>
>


-- 
Henrique Dallazuanna
Curitiba-Paraná-Brasil
25° 25' 40" S 49° 16' 22" O



More information about the R-help mailing list