r - 将数据切片(即 n×n 矩阵)添加到 R 中的多维矩阵

标签 r multidimensional-array

根据标题,有没有办法将数据切片附加到 R 中现有的 N 维矩阵上,该数据切片是一个 n×n 矩阵?

例如,我有以下内容:

one <- array(1, dim = c(3, 3))
two <- array(2, dim = c(3, 3))
three <- array(3, dim = c(6, 6))

然后我想将其转换为我可以使用的 6x6x3 矩阵,如下所示:

[[1]]
     [,1] [,2] [,3] [,4] [,5] [,6]
[1,]    1    1    1   NA   NA   NA
[2,]    1    1    1   NA   NA   NA
[3,]    1    1    1   NA   NA   NA
[4,]   NA   NA   NA   NA   NA   NA
[5,]   NA   NA   NA   NA   NA   NA
[6,]   NA   NA   NA   NA   NA   NA

[[2]]
     [,1] [,2] [,3] [,4] [,5] [,6]
[1,]    2    2    2   NA   NA   NA
[2,]    2    2    2   NA   NA   NA
[3,]    2    2    2   NA   NA   NA
[4,]   NA   NA   NA   NA   NA   NA
[5,]   NA   NA   NA   NA   NA   NA
[6,]   NA   NA   NA   NA   NA   NA

[[3]]
     [,1] [,2] [,3] [,4] [,5] [,6]
[1,]    3    3    3    3    3    3
[2,]    3    3    3    3    3    3
[3,]    3    3    3    3    3    3
[4,]    3    3    3    3    3    3
[5,]    3    3    3    3    3    3
[6,]    3    3    3    3    3    3

我知道如何通过我自己的代码来做到这一点,所以我更感兴趣的是是否有支持此功能的现有库函数。

最佳答案

除了 abind 之外,我想您还需要计算出矩阵的最大大小并创建用适当数量的 NA 填充的矩阵?

padmat <- function(X,m,n) {
  Y <- matrix(NA,m,n)
  Y[1:nrow(X),1:ncol(X)] <- X
  Y
}
one <- array(1, dim = c(3, 3))
two <- array(2, dim = c(3, 3))
three <- array(3, dim = c(6, 6))

mlist <- list(one,two,three)

maxrows <- max(sapply(mlist,nrow))
maxcols <- max(sapply(mlist,ncol))

mlist2 <- lapply(mlist,padmat,m=maxrows,n=maxcols)

library(abind)
abind(mlist2,along=3)

关于r - 将数据切片(即 n×n 矩阵)添加到 R 中的多维矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6373185/

相关文章:

r - 输出具有重复值的向量

r - ggplot2 生成的切片图

r - 避免 R 中的函数名冲突

python - 添加两个不同维度的矩阵

c++ - 二维数组在尝试填充时失败

r - 在新创建的列中,使用上面行中的值使用 dplyr 计算下一行

java - 如果行和列中的所有元素都相同,如何检查二维数组?

c - 将多维数组作为参数传递给c

c++ - 多维数组内存存储概述

r - 获取分类数据频率矩阵的程序