假设我有一个 4 维 n x n x n x n 数组 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 型细胞的所有距离