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

标签 arrays r matrix indexing

我正在使用 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/

相关文章:

javascript - 过滤重复键

c++ - 二维 HashMap : A matrix where row and column types are pointers

r - 循环更快计算的替代方法

java - 查找最小总服务器停机时间

c - 记住最后执行的命令的简单历史记录

arrays - 检查元类型是否为元素类型为 MyProtocol 的数组

r - 提取数据框中每组内的最大值

java - 无法在 R ubuntu 12.04 中安装 intamap 包(涉及 java)

javascript - 指定图中某些节点的位置

c# - 从矩阵获取区域/区域边界