【发布时间】:2021-06-07 21:43:26
【问题描述】:
我在 R 中有两个列表列表,我想加入一个列表列表并保留原始结构。以以下为例:
library(tidyverse)
library(dplyr)
library(purrr)
a <- data.frame(c("MA", "V", "UDR"), stringsAsFactors=FALSE)
b <- data.frame(c("MMM", "AAPL"), stringsAsFactors=FALSE)
c <- data.frame(c("MO", "ABT", "XYZ", "Q"), stringsAsFactors=FALSE)
d <- data.frame(c("AA", "NEM", "LUV"), stringsAsFactors=FALSE)
lst1 <- list(list(a), list(b))
lst2 <- list(list(c), list(d))
我会撒谎创建一个 lst3,它附加/连接子列表“a”和“c”以及“b”和“d”中包含的字符。
我想要的结果是:
lst3 <- list(list(data.frame(c("MA", "V", "UDR", "MO", "ABT", "XYZ", "Q"))), list(data.frame(c("MMM", "AAPL", "AA", "NEM", "LUV"))))
我认为下面的代码很接近,但我不太明白。
lst3 <- map(1:2, function(x) {
append(flatten(lst1[[x]]), flatten(lst2[[x]]))
})
【问题讨论】:
-
lst1 和 lst2 不仅仅是数据帧列表,而不是每个包含单个数据帧的列表列表,是否有某种原因?另请注意,从 R 4.0 开始,stringsAsFactors=FALSE 是默认值,因此无需指定。
-
是的,这可能是可能的。在我的真实代码中,它只是 map 函数的结果。所以我试图尽可能接近真实情况进行复制。谢谢!