簡體   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