You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 20:10:32