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

Henrique Dallazuanna wwwhsd at gmail.com
Thu Mar 13 20:15:07 CET 2008


A example:

x <- rnorm(5)

x[3]
`[`(x, 3)
`[[`(x, 3)

x[3:4]
`[`(x, 3:4)
`[[`(x, 3:4) # Error


On 13/03/2008, John Kane <jrkrideau at yahoo.ca> wrote:
> Ah ?Extract.  Thanks
>
>  Unless I'm missing something there is nothing  in the
>  Usage or Examples to suggest to a naive reader like me
>  that one can use an unbalanced [ or [[, that is
>  withoug a corresponding ] or ]].
>
>  I probably am just not understanding the details.
>
>
>  --- Henrique Dallazuanna <wwwhsd at gmail.com> wrote:
>
>  > 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
>  >
>
>
>
>
>       ____________________________________________________
>  Yahoo! Canada Toolbar: Search from anywhere on the web, and bookmark your favourite sites. Download it now at
>  http://ca.toolbar.yahoo.com.
>


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



More information about the R-help mailing list