[英]List of recursively concatenated lists in R
是否有一種簡潔的方法來在R中創建遞歸連接列表的列表?
以下是我想要解決的問題類型的具體說明:給出兩個列表,例如
u <- list("A", list("B", list("C", "D")), "E")
v <- c("x", "y")
我想(遞歸地)生成以下字符向量列表
w <- list(c("A", "x"), c("A", "y"),
c("B", "C", "x"), c("B", "C", "y"),
c("B", "D", "x"), c("B", "D", "y"),
c("E", "x"), c("E", "y"))
“簡潔”是指R-idiomatic方式,具有最少數量的顯式for循環。
我試過的 :我首先嘗試解決成對連接的更基本問題,即形成列表之類的問題
r <- list(c("A", "x"), c("A", "y"), c("B", "x"), c("B", "y"),
c("C", "x"), c("C", "y"))
來自兩個列表
p <- list("A", "B", "C")
q <- list("x", "y")
但是,執行看似明智的操作
outer(p, q, FUN = "c")
扔了例外
dims [product 6] do not match the length of object [12]
是什么賦予了?
一種選擇可能是
w1 <- do.call(c,lapply(u, function(x) {
x1 <- if(!is.list(x)) outer(x,v, FUN=paste)
else t(outer(do.call(paste, x), v, FUN= paste))
strsplit(x1, " ")}))
identical(w, w1)
#[1] TRUE
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.