问题
令 K >= 2 且 d >= 3。我有一个维度为 的 3 维数组c(K,K-1,d)
。
例如,如果 K = d = 3,
A <- array(1:18,dim = c(3,2,3))
。
现在我想通过选择沿第一维的索引来获得 (K-1) xd 矩阵,例如
M <- A[1,,]
。
如果 K > 2 则工作正常。但如果 K = 2,则第二个维度为 1,R 的默认行为是删除它。因此,以下代码将返回长度为 d 的向量而不是矩阵。
K <- 2
d <- 3
A <- array(1:6,dim = c(K,K-1,d))
A[1,,]
Run Code Online (Sandbox Code Playgroud)
我需要一个矩阵,因为我想做一个矩阵乘积。
我尝试过的
通过使用该选项,可以强制 R 不删除维度drop
。
M <- A[1,,,drop = FALSE]
dim(M)
Run Code Online (Sandbox Code Playgroud)
但这会返回一个 3 维数组,因为第一个维度也没有被删除。
我也尝试使用as.matrix
。
M <- as.matrix(A[1,,])
dim(M)
Run Code Online (Sandbox Code Playgroud)
这将返回 adx (K-1) 矩阵,而不是所需的 (K-1) xd 矩阵。好吧,我可以使用转置t()
,但一旦 K>2,它就不再起作用了。无论 K 的值如何,是否有一种有效的方法可以完成这项工作?
归档时间: |
|
查看次数: |
2540 次 |
最近记录: |