2016-09-02 244 views
1

給定矩陣如何從矩陣R中

mat = matrix(round(runif(min=0,max=1,n=9*9)),ncol=9,nrow=9) 

說你使用數組索引

indx.1 = which(mat == 1, arr.ind=TRUE) 

你如何處理這些指標要1 所有值操縱數組索引值矩陣中的值?

下面沒有完成什麼我後:

result.i.dont.want = mat 
result.i.dont.want[indx.1[,1],indx.1[,2]] = NA 

,因爲據我所知,在indx.1的每個組合[R指標[,1],indx.1 [2]。

我知道這很容易,如果你使用arr.ind = FALSE,但是,我很好奇arr.ind = TRUE。例如:

result.i.do.want = mat 
result.i.do.want[which(mat == 1)] = NA 

感謝您的幫助!

回答

2

您在詢問矩陣索引。由which返回的indx.1是2列的矩陣;您可以直接使用它來解決矩陣元素。這被稱爲矩陣索引。所以請嘗試mat[index.1]

還要考慮這個玩具例子:

A <- matrix(1:9, 3, 3) 

A[1:2, 1:2] 
#  [,1] [,2] 
#[1,] 1 4 
#[2,] 2 5 

A[cbind(1:2, 1:2)] 
# [1] 1 5