假設我有一個4維nxnxnxn數組A.A是一個距離矩陣,使得A [i,j,l,k]是距離位置的距離i,j到位置對l,k。假設我有位置類型T的n×n矩陣,可以說類型可以是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位置的所有路徑的距離。R:如何根據另一個矩陣提取多維數組值的集合
我的想法是使用類似
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是四維的渠道 - 做它的索引其不喜歡你可以做A [type.0,類型。 1]。當然,我可以用循環來做,但是有沒有更好的方法來做到這一點。
我在這裏找不到過去的答案,但它可能會遺漏一些東西。
這是一個簡單的測試用例,它有兩種類型0和1,位置(1,1),類型0(1,2),類型0,(2,1),類型1和( 2,2)型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型細胞
應該相當簡單。你已經跌倒了'which(,arr.ind = TRUE)'的詭計。爲什麼不發佈一個具有A和T實例的小測試用例? –
測試用例現已發佈在 – MHH
以上爲簡單起見,我僅對測試問題進行了類型0和1的測試,對不起 – MHH