2014-01-20 80 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