如何在R语言中按最后维度拼接两个4维数组
解决R语言4维数组按最后一维拼接的问题
首先你代码里有个小问题:创建arr2的时候误用了c(a1,a2),应该改成c(b1,b2),不然两个数组内容完全一致,先修正这个细节。
下面提供两种可行的拼接方法:
方法1:使用abind包(你尝试过的工具)
先确保安装并加载abind包,然后指定拼接维度即可:
# 先修正arr2的创建代码 b1 <- c(1,2,3,4) b2 <- c(5,6,7,8,9) r.names <- c("c1","c2","c3") c.names <- c("r1","r2","r3") v.names <- c("v1","v2") m.names <- c("second") arr2 <- array(c(b1,b2), dim=c(3,3,2,1), dimnames=list(c.names, r.names, v.names, m.names)) # 安装并加载abind包 install.packages("abind") library(abind) # 沿着第4个维度(年份)拼接 combined_arr <- abind(arr, arr2, along = 4) # 验证结果 print(combined_arr) dim(combined_arr) # 输出应为 3 3 2 2 dimnames(combined_arr)[[4]] # 输出应为 c("first", "second")
关键是along=4参数,明确指定沿着第4个维度(年份维度)拼接,就能把两个1年的数组合并成2年的4维数组。
方法2:Base R原生实现(无需额外包)
如果不想安装第三方包,可以直接重新构造数组:
# 合并两个数组的原始数据 combined_data <- c(arr, arr2) # 重新定义维度,将最后一维扩展为2 combined_arr <- array(combined_data, dim = c(3,3,2,2)) # 设置维度名称 dimnames(combined_arr) <- list( c.names, r.names, v.names, c("first", "second") ) # 验证结果 print(combined_arr)
这种方法直接合并数组元素后重新定义维度和名称,同样能实现你要的“第一年+第二年”的4维数组结构。
内容的提问来源于stack exchange,提问作者Leo
相关产品推荐
相关产品推荐

