繁体   English   中英

访问嵌套列表中的数据框

[英]Accessing dataframes within a nested list

我有一个包含三种不同类型数据集的列表,每种类型有十个数据集。 它看起来像这样:

mat1 <- replicate(n=10,data.frame(matrix(data=rnorm(20,0,1),nrow=5,ncol=5)),simplify=FALSE)
mat2 <- replicate(n=10,data.frame(matrix(data=rnorm(20,0,1),nrow=5,ncol=5)),simplify=FALSE)
mat3 <- replicate(n=10,data.frame(matrix(data=rnorm(20,0,1),nrow=5,ncol=5)),simplify=FALSE)
combined <- list(mat1,mat2,mat3)

我想将相同的 function 应用于每个数据集,但我不知道如何访问它们。 我尝试使用 purrr 中的 map,但它仅适用于列表中的第一个:

map(combined[[i]],~length(.))

[[1]]
[1] 5

[[2]]
[1] 5

[[3]]
[1] 5

[[4]]
[1] 5

[[5]]
[1] 5

[[6]]
[1] 5

[[7]]
[1] 5

[[8]]
[1] 5

[[9]]
[1] 5

[[10]]
[1] 5

如何将 function 应用于嵌套列表中的所有数据集?

* function 比length更复杂 - 它是来自另一个 package 的 function,我需要使用~function访问

您可以在combined中对每个列表应用lengths

lapply(combined, lengths)

#[[1]]
# [1] 5 5 5 5 5 5 5 5 5 5

#[[2]]
# [1] 5 5 5 5 5 5 5 5 5 5

#[[3]]
# [1] 5 5 5 5 5 5 5 5 5 5

使用purrrmap

purrr::map(combined, lengths)

如果length只是一个示例,并且您想要一种将 function 应用于每个嵌套列表的通用方法,则可以使用嵌套lapply

lapply(combined, function(x) lapply(x, function(y) length(y)))

或使用rapply

rapply(combined, length, how = 'list')

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM