arrays - 将 3d 数组中的工作表行绑定(bind)为 2d 数组

标签 arrays r multidimensional-array collapse rbind

我有一个 3 维数组,并希望通过逐行堆叠一维(组合一维的行)来折叠为二维。在我的代码中,我在每个索引处用二维数组填充了一个“工作表”(第 3 维),现在我想采用该 3 维数组并将这些工作表的行彼此堆叠。

这是一个示例数组,因此我可以解释我希望最终结果的样子:

x <- array(1:24, dim=c(2, 3, 4),
           dimnames=list(letters[1:2], LETTERS[1:3], letters[23:26]))
dim(x)

我要 w , x , y , z以二维数组的形式相互堆叠,该数组将具有 8 行和 3 列。这是一种很麻烦的方法(在我的循环中是不可能的):
x1<-x[,,1]
x2<-x[,,2]
x3<-x[,,3]
x4<-x[,,4]

All<-rbind(x1,x2,x3,x4)

我看过 abindadrop但他们并不完全正确。

我也试过aperm但我不认为你可以用这个来减少尺寸,只是转置(?)

或者,我可以创建一个 list (实际上,这将是理想的,因为数组可能具有不同的行号)。在那种情况下,我将如何以相同的方式组合列表中多个元素的行?

谢谢!

最佳答案

我会将我的评论推广到答案,尽管我仍然认为应该有一种方法来改变尺寸。

apply(x, 2, c)
#or if you're really pushing for speed, the simpler function:
apply(x, 2, identity)

# Giving:
#      A  B  C
#[1,]  1  3  5
#[2,]  2  4  6
#[3,]  7  9 11
#[4,]  8 10 12
#[5,] 13 15 17
#[6,] 14 16 18
#[7,] 19 21 23
#[8,] 20 22 24

匹配请求的输出,没有行名:
all.equal(apply(x,2,c), All, check.attributes=FALSE)
#[1] TRUE

关于arrays - 将 3d 数组中的工作表行绑定(bind)为 2d 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24275366/

相关文章:

java - 将 object[][] 转换为 ArrayList<Object[]>

c - 如何将数组的一部分从二维数组复制到 C 中的另一个数组

javascript - 如何显示(或调用)在 javascript 数组内部定义的匿名函数的内容

javascript - 如何在 javascript 的以下代码中优化对数组的处理?

javascript - JS使用toString获取字符串中的数组(不改变实际数组)

在不使用 dcast 的情况下 reshape R 中的数据(reshape2)

arrays - 根据此数组中的元素对数组进行排序

r - 在 ggplot2 中绘制白天(无日期)

r - 在 R 中选择用于 Halton 数列的素数

java - 在java中将double arraylist转换为二维数组