我目前有一个数组是:
vector1 <- c(5,9,3)
vector2 <- c(10,11,12,13,14,15)
new.array <- array(c(vector1,vector2),dim = c(3,3,100))
print(new.array)
, , 1
[,1] [,2] [,3]
[1,] 5 10 13
[2,] 9 11 14
[3,] 3 12 15
, , 2
[,1] [,2] [,3]
[1,] 5 10 13
[2,] 9 11 14
[3,] 3 12 15
...
Run Code Online (Sandbox Code Playgroud)
我想知道如何从每个矩阵的第三行中减去第二行,同时保留数组结构.例如,我想获得:
, , 1
[,1] [,2] [,3]
[1,] -6 1 1
, , 2
[,1] [,2] [,3]
[1,] -6 1 1
...
Run Code Online (Sandbox Code Playgroud)
谢谢.
这样做:
new.array[3, , , drop = FALSE] - new.array[2, , , drop = FALSE]
Run Code Online (Sandbox Code Playgroud)
这drop = FALSE是为了确保数组的子集具有与原始数组相同的维度.
你可以这样做:
如果你运行dim(new.array)它,它将按行,列和最后一个维度的顺序返回三个维数,表示你的矩阵数.按顺序访问任何特定的矩阵.你必须这样做:array [,, 1]将获取该特定数组的第一个矩阵,依此类推.在这种情况下,形成的矩阵总数为100.运行dim(new.array)并查看自己.使用lapply这些100点个小矩阵.你可以从第二行中减去第三行.如下.
> lapply(1:100, function(x)new.array[,,x][2,] - new.array[,,x][3,])
Run Code Online (Sandbox Code Playgroud)