gpt4 book ai didi

r - 转置列表列表

转载 作者:行者123 更新时间:2023-12-02 04:27:16 25 4
gpt4 key购买 nike

我有一个包含列表条目的列表,我需要转置结构。原始结构是矩形,但子列表中的名称不匹配。

这是一个例子:

ax <- data.frame(a=1,x=2)
ay <- data.frame(a=3,y=4)
bw <- data.frame(b=5,w=6)
bz <- data.frame(b=7,z=8)
before <- list( a=list(x=ax, y=ay), b=list(w=bw, z=bz))

我想要什么:

after  <- list(w.x=list(a=ax, b=bw), y.z=list(a=ay, b=bz))

我不关心结果列表的名称(在任何级别)。

显然这可以明确地完成:

after <- list(x.w=list(a=before$a$x, b=before$b$w), y.z=list(a=before$a$y, b=before$b$z))

但这很丑陋并且仅适用于 2x2 结构。这样做的惯用方法是什么?

最佳答案

下面的代码将创建一个列表,其中包含 before 中每个列表的第 i 个元素:

lapply(before, "[[", i)

现在你要做的就是

n <- length(before[[1]]) # assuming all lists in before have the same length
lapply(1:n, function(i) lapply(before, "[[", i))

它应该会给你你想要的。它的效率不是很高(多次遍历每个列表),您可能可以通过保留指向当前列表元素的指针来提高效率,因此请决定这对您来说是否足够好。

关于r - 转置列表列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16179197/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com