在R中使用abind()合并多维数组:将3D数组转换为指定维度
使用abind包转换3D数组维度
没问题,这事儿很简单,咱们一步步来操作:
首先,得确保你已经安装并加载了abind包——毕竟核心函数就在这儿:
# 安装包(如果还没装的话) install.packages("abind") # 加载包 library(abind)
接下来,先定义你提到的原数组x:
x <- array(1:50, dim = c(5, 5, 2))
它的结构正如你给出的那样:
, , 1 [,1] [,2] [,3] [,4] [,5] [1,] 1 6 11 16 21 [2,] 2 7 12 17 22 [3,] 3 8 13 18 23 [4,] 4 9 14 19 24 [5,] 5 10 15 20 25 , , 2 [,1] [,2] [,3] [,4] [,5] [1,] 26 31 36 41 46 [2,] 27 32 37 42 47 [3,] 28 33 38 43 48 [4,] 29 34 39 44 49 [5,] 30 35 40 45 50
现在要把它转换成c(10, 5, 1)的维度,只需要用abind()函数指定**沿着第一个维度(行)**合并即可,参数用along = 1:
# 执行合并转换 result <- abind(x, along = 1) # 检查维度 dim(result) # 输出: [1] 10 5 1
最终得到的数组结构就是你想要的样子:
, , 1 [,1] [,2] [,3] [,4] [,5] [1,] 1 6 11 16 21 [2,] 2 7 12 17 22 [3,] 3 8 13 18 23 [4,] 4 9 14 19 24 [5,] 5 10 15 20 25 [6,] 26 31 36 41 46 [7,] 27 32 37 42 47 [8,] 28 33 38 43 48 [9,] 29 34 39 44 49 [10,] 30 35 40 45 50
简单解释下:along = 1的作用是把原数组第三个维度里的两个5×5矩阵,按行的方向上下拼接,这样行数从5变成10,列数保持5,第三个维度自然就只剩1个切片啦。
内容的提问来源于stack exchange,提问作者compbiostats
相关产品推荐
相关产品推荐

