我有一个列表,在下面的示例中看起来像xyz。
> x <- list(a=c("cat", "dog"), b=c("parrot", "chicken"), c=c("animal", "monkey"))
> y <- list(a=c("cat", "dog"), b=c("parrot", "chicken"), c=c("animal", "monkey"))
> z <- list(a=c("cat", "dog"), b=c("parrot", "chicken"), c=c("animal", "monkey"))
> xyz <- list(x, y, z)
> xyz
[[1]]
[[1]]$a
[1] "cat" "dog"
[[1]]$b
[1] "parrot" "chicken"
[[1]]$c
[1] "animal" "monkey"
[[2]]
[[2]]$a
[1] "cat" "dog"
[[2]]$b
[1] "parrot" "chicken"
[[2]]$c
[1] "animal" "monkey"
[[3]]
[[3]]$a
[1] "cat" "dog"
[[3]]$b
[1] "parrot" "chicken"
[[3]]$c
[1] "animal" "monkey"
现在我想为xyz中的每个列表提取存储在$ b中的信息。
xyz的长度会不时变化,因此xyz列表中列b的长度也会变化。但是我总是希望从b中提取信息。
所需的输出是一个向量,每列的列b都有信息。
> desired_output <- data.frame(x=c(xyz[[1]]$b, xyz[[2]]$b, xyz[[3]]$b))
> desired_output
x
1 parrot
2 chicken
3 parrot
4 chicken
5 parrot
6 chicken
我的数据看起来更像。
> x <-list(df=data.frame((c(data.frame(a=c("cat", "dog"), b=c("cat", "dog"))))))
> x <-list(df=data.frame((c(data.frame(a=c("cat", "dog"), b=c("cat", "dog"))))))
> y <-list(df=data.frame((c(data.frame(a=c("cat", "dog"), b=c("cat", "dog"))))))
> z <-list(df=data.frame((c(data.frame(a=c("cat", "dog"), b=c("cat", "dog"))))))
> xyz<- list(x,y,z)
> class(xyz[[1]])
[1] "list"
> class(xyz[[1]]$df)
[1] "data.frame"
> xyz[[1]]$df$b
[1] cat dog
现在,我想在xyz中为每个数据框提取b列中的信息。
答案 0 :(得分:0)
绝对是重复的,但是使用一些较新的包可以做到这一点
library(purrr)
library(magrittr)
map(xyz, ~extract(.$b)) %>% unlist() %>% as.data.frame()