[R] ragged array with append

Chuck Cleland ccleland at optonline.net
Sat Nov 24 12:07:58 CET 2007


Alexy Khrabrov wrote:
> I wonder what's the right way in R to do the following -- placing  
> objects of the same kind together in subarrays of varying length.   
> Here's what I mean:
> 
>  > word <- c("a","b","c","d","e","f","g","h","i","j")
>  > kind <- c(1,1,1,2,3,4,5,5,7,7)
>  > d <- data.frame(word,kind)
>  > d
>     word kind
> 1     a    1
> 2     b    1
> 3     c    1
> 4     d    2
> 5     e    3
> 6     f    4
> 7     g    5
> 8     h    5
> 9     i    7
> 10    j    7
> 
> Now from this data frame, I want to assemble words of the same kind  
> into lists.  The result should look like (not R syntax):
> 
> 1 => [a,b,c]
> 2 => [d]
> 3 => [e]
> 4 => [f]
> 5 => [g,h]
> 7 => [i,j]
> 
> What is the most appropriate data structure in R for this result and  
> growing these sublists most effectively with append?

  It would make sense to use a list as the data structure, and here is
how you might do it:

with(d, split(word, kind))

# OR

with(d, split(as.character(word), kind))

?split

> Cheers,
> Alexy
> 
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code. 

-- 
Chuck Cleland, Ph.D.
NDRI, Inc.
71 West 23rd Street, 8th floor
New York, NY 10010
tel: (212) 845-4495 (Tu, Th)
tel: (732) 512-0171 (M, W, F)
fax: (917) 438-0894



More information about the R-help mailing list