R中如何将多个四维数组沿新增第五维度拼接为单个数组
解决方法
你只需要给abind函数指定along = 5参数,即可沿新增的第5维度拼接数组:
abind默认沿输入数组的最后一个已有维度拼接,你之前的写法没有指定拼接维度,所以会把3个长度为3的观测维度拼成长度9的维度。指定along = n时,如果n大于输入数组的最大维度数,就会新增第n维作为拼接维度。
# 加载abind包 library(abind) # 沿第5维度(年份维度)拼接数组 test.array.bind <- abind(test.array1, test.array2, test.array3, along = 5) # 验证维度,输出为 16 8 4 3 3,符合测试预期 dim(test.array.bind)
如果要拼接18个年份的数组,推荐先把所有年份的四维数组存入一个列表,用do.call批量调用,避免逐个输入数组参数:
# 把18个年份的数组按时间顺序存入year_arrays列表 year_arrays <- list(test.array1, test.array2, test.array3, ...) # 替换为你实际的18个年份数组 test.array.all <- do.call(abind, c(year_arrays, along = 5)) # 给第五维设置年份维度名 dimnames(test.array.all)[[5]] <- 2003:2020 # 验证最终维度,输出为 16 8 4 3 18 dim(test.array.all)
内容的提问来源于stack exchange,提问作者The_Tams
相关产品推荐
相关产品推荐

