我有多个四维数组,每个数组包含一年的数据。我真实数据集中的维度是每个矩阵的经纬度坐标,按月份,然后是我在12个观测类别中的百分比。
我已经为示例制作了一个迷你版本
test.array1 <- array(0, dim = c(16, 8, 4, 3), dimnames = list(c(-7.5:7.5), c(-3.5:3.5), c("Jan", "Feb", "Mar", "Apr"), 1:3))
test.array2 <- array(0, dim = c(16, 8, 4, 3), dimnames = list(c(-7.5:7.5), c(-3.5:3.5), c("Jan", "Feb", "Mar", "Apr"), 1:3))
test.array3 <- array(0, dim = c(16, 8, 4, 3), dimnames = list(c(-7.5:7.5), c(-3.5:3.5), c("Jan", "Feb", "Mar", "Apr"), 1:3))
我希望将这些结合为第五个维度,一年,从这一点使
test.array.all <- array(0, dim = c(16, 8, 4, 3, 18), dimnames = list(c(-7.5:7.5), c(-3.5:3.5), c("Jan", "Feb", "Mar", "Apr"), 1:3, 2003:2020))
但我需要利用现有的数组。我希望最终的阵列具有尺寸[16,8,4,3,18]
我尝试了abind的一些选项(仅使用这三个数组,因此针对abind包中的[16,8,4,3,3],但我不知道如何使其选项发挥作用,将它们组合为一个新的维度。例如
test.array.bind <- abind(test.array1, test.array2, test.array3)
绑定维度[16,8,4,9]的最后一个维度(obs(上的数组
test.array.bind <- abind(c(test.array1, test.array2, test.array3))
形成一个长4608的一维阵列。
由于某种原因,当我根据我在stackoverflow中发现的最接近的问题来查看以矩阵开头的选项时,我无法按照我认为的那样行事。不过,使用我在上面生成的数组来写这个问题,效果很好。我决定在这里添加答案是值得的,以防对其他人有帮助。
test.array.bind <- abind::abind(test.array1, test.array2, test.array3, along = 5)
# assuming pkg:abind has been installed
的值是现有阵列的维数+1,这产生了我想要的[16,8,4,3,3]