2014-01-20 82 views
1

好複雜的頭銜,但實際上它很容易解釋:-)對於一個矩陣值獲取價值的載體和更換矩陣值

我有一個矩陣M:

M<-matrix(c(1,3,4,5,7,6,2, 2,5,1,3,4,7,6, 1,7,3,2,5,4,6),nrow=3,ncol=7, byrow=TRUE) 
    [,1] [,2] [,3] [,4] [,5] [,6] [,7] 
[1,] 1 3 4 5 NA 6 2 
[2,] 2 5 1 3 4 7 6 
[3,] 1 7 3 2 5 4 NA 

我有一個向量與權重W:

W<-c(0.4,0.2,0.15,0.1,0.07,0.05,0.02) 

現在我要替換所有值矩陣取決於矩陣的數量,與此相應的位置向量中的值。所以我得到的矩陣(它需要是矩陣)應該看起來像這樣:

[,1] [,2] [,3] [,4] [,5] [,6] [,7] 
[1,] 0.4 0.15 0.1 0.07 NA 0.05 0.2 
[2,] 0.2 0.07 0.4 0.15 0.1 0.02 0.05 
[3,] 0.4 0.02 0.15 0.2 0.07 0.1 NA 

但我不知道如何實現這一點。

M2<-W[M] 

沒有達到預期的結果..任何建議嗎?

+1

如果您想替換:'M [] < - W [M]' – Roland

+0

作品非常好,謝謝。如果你想複製到一個新的矩陣,而不覆蓋舊的矩陣? – MichiZH

回答

3
matrix(W[M], nrow=nrow(M)) 

    [,1] [,2] [,3] [,4] [,5] [,6] [,7] 
[1,] 0.4 0.15 0.10 0.07 NA 0.05 0.20 
[2,] 0.2 0.07 0.40 0.15 0.10 0.02 0.05 
[3,] 0.4 0.02 0.15 0.20 0.07 0.10 NA 
+0

我忘了提及的是,我有時會有NA列應該保持NA,這就是爲什麼它不工作。我編輯了我的例子。 – MichiZH

+0

你確定嗎?無論NA的存在如何,我的例子都可以工作仔細檢查你的NA不是字符「NA」。 – tonytonov

+0

對不起我的錯誤。現在就開始工作吧。完美,thx! – MichiZH