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

时间:2016-08-08 23:33:21

标签: arrays r matrix indexing

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

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

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

a[1,,]
[1] 1

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

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

   B
A   b
  a 1

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

   B
A   b
  a 1

我怀疑问题是在索引数组时,我们无法区分“取1”值&#39;并且&#39;采取所有价值观&#39;万一&#39;全部&#39;只是一个单身......

2 个答案:

答案 0 :(得分:6)

drop的{​​{1}}参数是全有或全无,但[包有一个abind功能,可让您选择要删除的维度:

adrop

答案 1 :(得分:4)

没有任何额外的软件包,我能做的最好就是apply并返回子数组:

apply(a, 1:2, identity)
# or
apply(a, 1:2, I)

#   B
#A   b
#  a 1