簡體   English   中英

如何在循環中按字符名稱訪問列表中的列表?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM