[R] extracting vectors from lists of lists

Jennifer Young Jennifer.Young at math.mcmaster.ca
Mon Dec 14 17:55:29 CET 2009


This is just the thing.
The former version I would never have guessed, but the function(x) version
is much more intuitive.

Does there exist some section of some manual where these sorts of things
are explained? I find that figuring out how to access parts of output is
the trickiest thing in R.
For instance, it took me ages to figure out that to extract the actual
derivative from the output of x<-deriv() you have to use attr(x,
"gradient").

Thanks also to David and Benilton, who also replied with the same
solution; I received all 3 responses within 10 minutes of asking the
question!

> Jennifer -
>     Does this do what you want?
>
>> v1 = sapply(output,'[[','vec')
>> v2 = sapply(output,'[[','other')
>> v1
>       [,1] [,2]
> [1,]    1    6
> [2,]    2    7
> [3,]    3    8
> [4,]    4    9
> [5,]    5   10
>> v2
> [1] "stuff" "stuff"
>
> (in more readable form:
>
> v1 = sapply(output,function(x)x$vec)
> v2 = sapply(output,function(x)x$other)    )
>
>
> Notice that if the objects returned by sapply are not conformable,
> it will return its result in a list.
>
>
>  					- Phil Spector
>  					 Statistical Computing Facility
>  					 Department of Statistics
>  					 UC Berkeley
>  					 spector at stat.berkeley.edu
>
>
>
> On Fri, 11 Dec 2009, Jennifer Young wrote:
>
>> Good evening
>>
>> I often have as output from simulations a list of various values,
>> vectors
>> and matrices.
>> Supposing that I then run said simulation several times, I often want to
>> extract a particular result from each simulation for plotting and,
>> ideally, put it in a matrix.
>>
>> A simple example
>>
>> v1 <- 1:5
>> v2 <- 6:10
>> other1 <- "stuff"
>> other2 <- "stuff"
>>
>> set1 <- list(v1,other1)
>> names(set1) <- c("vec","other")
>> set2 <- list(v2,other2)
>> names(set2) <- c("vec","other")
>>
>> output <- list(set1, set2)
>>
>>
>> Is there some form of lapply() that will allow me to extract v1 and v2
>> (ie, the $vec elements) from both sets?
>> Bonus if I can then put it into a matrix tidily.
>>
>> many thanks
>> Jennifer Young
>>
>> ______________________________________________
>> 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