我正在使用 3D 数组。函数从用户处获取 2D 数组切片(矩阵)并使用行和列名称(数组对应的暗名称)将其可视化。如果数组维度 > 1,它就可以正常工作。
但是,如果我有 1x1x1 数组,则无法将切片提取为矩阵:
a <- array(1, c(1,1,1), list(A="a", B="b", C="c"))
a[1,,]
[1] 1
它是一个没有暗名的标量,因此缺少部分必要的信息。如果我添加 drop=FALSE
,我不会得到矩阵,但会保留原始数组:
a[1,,,drop=FALSE]
, , C = c
B
A b
a 1
暗名在这里,但它仍然是 3 维的。有没有一种简单的方法可以从 1x1x1 数组中获取类似于上面的矩阵切片,只是没有第三个维度:
B
A b
a 1
我怀疑问题在于,在索引数组时,我们无法区分“取 1 个值”和“取所有值”,以防“all”只是一个单例...
最佳答案
[
的 drop
参数是全有或全无,但 abind
包有一个 adrop
函数可以让您选择要删除的维度:
abind::adrop(a, drop = 3)
## B
## A b
## a 1
关于arrays - 如何在 R 中提取 1x1 数组切片作为矩阵?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40838082/