Try this:

split(dataframe, dataframe$x)

Jean


`·.,,  ><(((º>   `·.,,  ><(((º>   `·.,,  ><(((º>

Jean V. Adams
Statistician
U.S. Geological Survey
Great Lakes Science Center
223 East Steinfest Road
Antigo, WI 54409  USA



From:
Jonathan Greenberg <jgrn@illinois.edu>
To:
r-help <r-help@r-project.org>
Date:
07/28/2011 03:22 PM
Subject:
[R] Data frame to list
Sent by:
r-help-bounces@r-project.org



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

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@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.



	[[alternative HTML version deleted]]

