[R] Data frame to list

David Winsemius dwinsemius at comcast.net
Thu Jul 28 22:35:25 CEST 2011


On Jul 28, 2011, at 4:14 PM, Jonathan Greenberg wrote:

> I'm hoping this is an easy problem that I'm missing something  
> obvious.  Given:
>
> x=c(1,1,1,2,2,3,3,3)
> y=c(1:length(x))
> dataframe=data.frame(x,y)
>
> I would like to convert this to a list for use with certain functions,
> where each entry of the list is a subsetted dataframe based on
> dataframe$x

?split
 > split(dataframe, x)
$`1`
   x y
1 1 1
2 1 2
3 1 3

$`2`
   x y
4 2 4
5 2 5

$`3`
   x y
6 3 6
7 3 7
8 3 8

>
> I can do this "brute force" by a for-next loop:
>
> unique_x=unique(dataframe$x)
> unique_x_N=length(unique_x)
> dataframe_to_list=vector(mode="list",length=unique_x_N)
> for(i in 1:unique_x_N)
> {
> 	dataframe_to_list[[i]]=subset(dataframe,x==unique_x[i])
> 	
> }
>
> My R-gut is telling me there's a much more efficient way of doing this
> -- is it right?
>
> --j
>
> ______________________________________________
> 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.

David Winsemius, MD
West Hartford, CT



More information about the R-help mailing list