假设我有一个 4 维 nxnxnxn 数组 A。A 是一个距离矩阵,因此 A[i,j,l,k] 是从位置 i,j 到位置对 l,k 的距离。假设我有一个位置类型 T 的 nxn 矩阵,假设类型可以是 0、1 或 2,所以 T[i,j]=2 意味着第 i,j 个位置是类型 2。提取的最简单方法是什么A 的所有 [i,j,l,k] 项使得 T[i,j]=2 和 T[l,k]=1,表示从类型 1 位置到类型 2 位置的所有路径的距离.
我的想法是使用类似的东西
type.0 = which(T == 0, arr.ind=T)
type.1 = which(T == 1, arr.ind=T)
type.2 = which(T == 2, arr.ind=T)
但问题是因为 A 是四维的,所以 R 进行索引的方式不像你可以只做 A[type.0,type.1]。当然我可以用循环来做,但有没有更好的方法。
我在这里找不到过去的答案,但可能我错过了一些东西。
这是一个简单的测试用例,有两种类型 0 和 1,位置为 (1,1)、类型 0 (1,2)、类型 0、(2,1)、类型 1 和 (2,2) 的 2x2 点阵类型 1。
A = array(c(0,1,1,1.4,1,0,1.4,1,1,1.4,0,1,1.4,1,1,0), dim = c(2, 2, 2, 2))
T = matrix(c(0,1,0,1),2,2)
我想要从 0 型细胞到 1 型细胞的所有距离