[R] flatten a list of lists
Michael Friendly
friendly at yorku.ca
Thu Oct 17 15:15:21 CEST 2013
I have functions that generate lists objects of class "foo" and lists of
lists of these, of class
"foolist", similar to what is shown below.
How can I flatten something like this to remove the top-level list
structure, i.e.,
return a single-level list of "foo" objects, of class "foolist"?
foo <- function(n) {
result <- list(x=sample(1:10,n), y=sample(1:10,n))
class(result) <- "foo"
result
}
multifoo <- function(vec, label, ...) {
result <- lapply(vec, foo, ...)
names(result) <- paste0(label, vec)
class(result) <- "foolist"
result
}
foo1 <- multifoo(1:2, "A")
foo2 <- multifoo(1:2, "B")
mfoo <- list(A=foo1, B=foo2)
str(mfoo, 2)
> str(mfoo, 2)
List of 2
$ A:List of 2
..$ A1:List of 2
.. ..- attr(*, "class")= chr "foo"
..$ A2:List of 2
.. ..- attr(*, "class")= chr "foo"
..- attr(*, "class")= chr "foolist"
$ B:List of 2
..$ B1:List of 2
.. ..- attr(*, "class")= chr "foo"
..$ B2:List of 2
.. ..- attr(*, "class")= chr "foo"
..- attr(*, "class")= chr "foolist"
In this case, what is wanted is a single-level list, of 4 foo objects,
A1, A2, B1, B2,
all of class "foolist"
--
Michael Friendly Email: friendly AT yorku DOT ca
Professor, Psychology Dept. & Chair, Quantitative Methods
York University Voice: 416 736-2100 x66249 Fax: 416 736-5814
4700 Keele Street Web: http://www.datavis.ca
Toronto, ONT M3J 1P3 CANADA
More information about the R-help
mailing list