![](/img/trans.png)
[英]Accessing particular cells within dataframes organized into list in R in a “vectorized” way
[英]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
使用purrr
的map
:
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.