如何在R中提取1x1数组切片作为矩阵?

Ott*_*met 3 arrays indexing r matrix

我正在使用3D数组.函数从用户获取2D数组切片(矩阵)并使用行和列名称(数组的相应dimnames)将其可视化.如果数组维度> 1,它可以正常工作.

但是,如果我有1x1x1数组,我无法将切片提取为矩阵:

a <- array(1, c(1,1,1), list(A="a", B="b", C="c"))

a[1,,]
[1] 1
Run Code Online (Sandbox Code Playgroud)

它是一个没有dimnames的标量,因此缺少部分必要信息.如果我添加drop=FALSE,我没有得到矩阵但保留原始数组:

a[1,,,drop=FALSE]
, , C = c

   B
A   b
  a 1
Run Code Online (Sandbox Code Playgroud)

这些名字在这里,但它仍然是三维的.有没有一种简单的方法可以从1x1x1数组获得一个看起来像上面的矩阵切片,只是没有第三个维度:

   B
A   b
  a 1
Run Code Online (Sandbox Code Playgroud)

我怀疑问题在于索引数组时,如果'all'只是一个单例,我们就无法区分'take 1 value'和'take all values'...

ali*_*ire 6

drop参数[是要么全有要么全无的,但abind包有一个adrop功能,可以让你选择要删除哪个维度:

abind::adrop(a, drop = 3)
##    B
## A   b
##   a 1
Run Code Online (Sandbox Code Playgroud)