
On Feb 8, 2012, at 5:06 PM, Johannes Radinger wrote:

>
> Am 08.02.2012 um 22:19 schrieb David Winsemius:
>
>>
>> On Feb 8, 2012, at 4:11 PM, Johannes Radinger wrote:
>>
>>> Hi,
>>>
>>> I want to split a dataframe based on a grouping variable (in one  
>>> column). The resulting new
>>> dataframes should be stored in a new variable. I tried to split  
>>> the dataframe using split() and
>>> to store it using a FOR loop, but thats not working so far:
>>>
>>> df <- data.frame(A=c("A1","A1","A2","A2"),B=seq(1:4))
>>>
>>> Fsplit <- function(x,y){
>>> 	ls <- split(x,f=x$y)
>>> 	for (i in names(ls)){
>>> 		i <- ls$i
>>> 	}
>>> }
>>>
>>> Fsplit(df,A) #1st argument is dataframe to split, 2nd argument  
>>> grouping variable
>>>
>>
>> It appears you want the name of the levels of df$A to be the names  
>> of separate variables in the global environment. If that is  
>> correct, then see the FAQ. I'm not sure which one it is among the  
>> Miscellaneous section, but you should be looking of the one that  
>> tells you how to construct a named variable.
>>
>
> Your hint with the global environment brought me on track. It seems  
> that I this task can be done with list2env() although there is still  
> a problem with my function. How
> can I parse the name of the dataframe and the column name in the  
> function...
>
> df <- data.frame(A=c("A1","A1","A2","A2"),B=seq(1:4))
>
> Fsplit <- function(x,y){
> 	ls <- split(x,f=x$y)
> 	list2env(ls,envir = .GlobalEnv)
> }
>
> Fsplit(df,A)

I still have not figured out what you really want to do. The simple  
answer to what you ask for in your written request is simply:

dfvar <- split(df, df$A)

So what is it about that result that is not useful for your (as yet  
unstated)  destination?

 > split(df, df$A)
$A1
    A B
1 A1 1
2 A1 2

$A2
    A B
3 A2 3
4 A2 4





>
> /johannes
>
>> Or:
>>
>> ? assign
>>
>> -- 
>> David Winsemius, MD
>> West Hartford, CT
>>
>

David Winsemius, MD
West Hartford, CT


	[[alternative HTML version deleted]]

