On Dec 14, 2009, at 11:55 AM, Jennifer Young wrote:

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").

The sort of knowledge can often be inferred by examination of the object with str(). Sometimes it is also necessary to examine either the print object or a summary object to see how to extract the particular results you desire.

--
David.

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
                                         spec...@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@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@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
Heritage Laboratories
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