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

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

Reply via email to