我正在使用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;只是一个单身......
答案 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