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

______________________________________________
[email protected] 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