gpt4 book ai didi

arrays - 删除 R 数组中的维度

转载 作者:行者123 更新时间:2023-12-01 15:55:06 25 4
gpt4 key购买 nike

问题

让 K >= 2 和 d >= 3。我有一个维度为 c(K,K-1,d) 的 3 维数组.

例如,如果 K = d = 3,
A <- array(1:18,dim = c(3,2,3)) .

现在我想通过选择沿第一维的索引来获得 (K-1) x d 矩阵,例如
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,,]

我需要一个矩阵,因为我想做一个矩阵产品。

我试过的

可以使用 drop 强制 R 不降维。选项。
M <- A[1,,,drop = FALSE]
dim(M)

但这会返回一个 3 维数组,因为第一维也没有被删除。

我也尝试使用 as.matrix .
M <- as.matrix(A[1,,])
dim(M)

这将返回一个 d x (K-1) 矩阵,而不是所需的 (K-1) x d 矩阵。好吧,我可以使用换位 t()但是一旦K> 2它就不再起作用了。无论 K 的值是多少,有没有一种有效的方法来完成这项工作?

最佳答案

创建一个数组并明确指定所需的维度:

array(A[1, , ], dim=c(K-1, d)) 

关于arrays - 删除 R 数组中的维度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47075495/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com