gpt4 book ai didi

r - 交错存储在 R 中的列表中的矩阵行

转载 作者:行者123 更新时间:2023-12-04 11:30:56 25 4
gpt4 key购买 nike

我想从矩阵列表创建交错矩阵。

示例输入:

> l <- list(a=matrix(1:4,2),b=matrix(5:8,2))
> l
$a
[,1] [,2]
[1,] 1 3
[2,] 2 4

$b
[,1] [,2]
[1,] 5 7
[2,] 6 8

预期输出:
1    3
5 7
2 4
6 8

我已经检查了 gdata 中的 interleave 函数,但它没有显示列表的这种行为。任何帮助表示赞赏。

最佳答案

这是一个单行:

do.call(rbind, l)[order(sequence(sapply(l, nrow))), ]
# [,1] [,2]
# [1,] 1 3
# [2,] 5 7
# [3,] 2 4
# [4,] 6 8

为了帮助理解,矩阵首先用 do.call(rbind, l) 堆叠在一起。 ,然后以正确的顺序提取行:
sequence(sapply(l, nrow))
# a1 a2 b1 b2
# 1 2 1 2

order(sequence(sapply(l, nrow)))
# [1] 1 3 2 4

它可以处理任意数量的矩阵,即使它们的行数不同,它也会做“正确的事情”(主观)。

关于r - 交错存储在 R 中的列表中的矩阵行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19781723/

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