[R] flatten lists

arun smartpink111 at yahoo.com
Wed Jun 27 00:37:41 CEST 2012


Hi,

Try:

do.call("c",do.call("c",x))

x1<-do.call("c",do.call("c",x))
 x2<-flatlist(x)
 identical(x1,x2)
[1] TRUE



A.K.



----- Original Message -----
From: Jeroen Ooms <jeroen.ooms at stat.ucla.edu>
To: Neal Fultz <nfultz at gmail.com>
Cc: r-help at r-project.org
Sent: Tuesday, June 26, 2012 6:23 PM
Subject: Re: [R] flatten lists

Hmm that doesn't seem to work if the original list is nested more than
2 levels deep. I should have probably given a better example:

x <- list(name="Jeroen", age=27, married=FALSE,
home=list(country=list(name="Netherlands", short="NL"), city="Utrecht"))




On Tue, Jun 26, 2012 at 3:04 PM, Neal Fultz <nfultz at gmail.com> wrote:
> do.call("c", x)
>
> maybe?
>
> On Tue, Jun 26, 2012 at 02:25:40PM -0700, Jeroen Ooms wrote:
>> I am looking for a function to flatten a list to a list of only 1
>> level deep. Very similar to unlist, however I don't want to turn it
>> into a vector because then everything will be casted to character
>> vectors:
>>
>> x <- list(name="Jeroen", age=27, married=FALSE,
>> home=list(country="Netherlands", city="Utrecht"))
>> unlist(x)
>>
>> This function sort of does it:
>>
>> flatlist <- function(mylist){
>>   lapply(rapply(mylist, enquote, how="unlist"), eval)
>> }
>>
>> flatlist(x)
>>
>> However it is a bit slow. Is there a more native way?
>>
>> ______________________________________________
>> 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.

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




More information about the R-help mailing list