gpt4 book ai didi

arrays - 对 3 维数组进行子集化时不要删除维度

转载 作者:行者123 更新时间:2023-12-04 19:28:58 24 4
gpt4 key购买 nike

A成为 1 x 2 x 2 -大批:

> A <- array(0, dim=c(1,2,2))
> A
, , 1

[,1] [,2]
[1,] 0 0

, , 2

[,1] [,2]
[1,] 0 0

然后 A[,,1]是无量纲的:
> A[,,1]
[1] 0 0

我想拥有:
     [,1] [,2]
[1,] 0 0
drop论点没有产生我想要的:
> A[,,1,drop=FALSE]
, , 1

[,1] [,2]
[1,] 0 0

我觉得这很烦人。并且有问题,因为 R 将向量标识为列矩阵,而不是行矩阵。

我当然可以做 matrix(A[,,1], 1, 2) .有没有更方便的方法?

最佳答案

我们可以只分配 dim基于 MARGIN我们正在提取

`dim<-`(A[, ,1], apply(A, 3, dim)[,1])
# [,1] [,2]
#[1,] 0 0

使用另一个例子
B <- array(0, dim = c(2, 1, 2))
`dim<-`(B[, ,1], apply(B, 3, dim)[,1])
# [,1]
#[1,] 0
#[2,] 0

如果我们使用的是打包解决方案,那么 adrop来自 abind可以获得预期的输出
library(abind)
adrop(A[,,1,drop=FALSE], drop = 3)
# [,1] [,2]
# [1,] 0 0

adrop(B[,,1,drop=FALSE], drop = 3)
# [,1]
#[1,] 0
#[2,] 0

关于arrays - 对 3 维数组进行子集化时不要删除维度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47654316/

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