簡體   English   中英

如何在R中並行合並兩個列表?

[英]How to merge two lists in parallel in R?

我在問如何並行地合並兩個列表,而不是按以下代碼順序附加。

例如,

A <- list(c(1,2,3), c(3,4,5), c(6,7,8))

B <- list(c("a", "b", "c"), c("d", "e", "f"), c("g", "h", "i"))

結果,

[[1]]
[[1]][[1]]
[1] 1 2 3

[[1]][[2]]
[1] "a" "b" "c"


[[2]]
[[2]][[1]]
[1] 3 4 5

[[2]][[2]]
[1] "d" "e" "f"


[[3]]
[[3]][[1]]
[1] 6 7 8

[[3]][[2]]
[1] "g" "h" "i"

簡單地使用Map

   Map(list,A,B)

更長的方法(尚未遞歸,直到第二級合並):

A <- list(c(1,2,3), c(3,4,5), c(6,7,8))

B <- list(c("a", "b", "c"), c("d", "e", "f"), c("g", "h", "i"))

mergepar <- function(x = A, y = B) { # merge two lists in parallel
    ln <- max(length(x), length(y)) # max length
    newlist <- as.list(rep(NA, ln)) # empty list of max length

    for (i in 1:ln) { # for1, across length
        # two level subsetting (first with [ and then [[, so no subscript out of bound error) and lapply
        newlist[[i]] <- lapply(list(A, B), function(x) "[["("["(x, i), 1)) 
    }

    return(newlist)
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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