[英]How to access list in a list by character name in a loop?
我有一個包含三個元素的列表 X。 每個元素 X[[i]] 是一個包含兩個元素的列表——X1 和 X2。
我想構造一個列表 X_new,它是一個包含兩個元素 X1 和 X2 的列表,每個元素 X_new[[i]] 是一個包含三個元素的列表。
這工作得很好:
X_new <- vector(mode = "list", length = 2)
X_new[[1]] <- lapply(X, function(x) x$X1)
X_new[[2]] <- lapply(X, function(x) x$X2)
但是如果我有n而不是 2 呢? 我試過這個
X_new <- vector(mode = "list", length = n)
ind <- names(X[[1]])
for (i in 1:n) {
X[[i]] <- lapply(X, function(x) x$ind[i])
}
但它不起作用,我只是得到空列表。
我們可以使用來自purrr
transpose
library(purrr)
X_new <- transpose(X)
-輸出
X_new
#[[1]]
#[[1]][[1]]
#[1] "a"
#[[1]][[2]]
#[1] "a"
#[[1]][[3]]
#[1] "a"
#[[2]]
#[[2]][[1]]
#[1] "b"
#[[2]][[2]]
#[1] "b"
#[[2]][[3]]
#[1] "b"
請參閱此討論以獲取答案。 簡而言之,您可以在 [[]] 列表括號內使用paste 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.