2017-04-19 63 views
0

我只是R的初學者,但到目前爲止找不到解決方案。我怎樣才能創建這樣的兩個向量中的矩陣?在Excel中,這很容易,但我怎麼能在R中做到這一點?我也想計算:A /(A + B) - > 10 /(10 + 10)= 0.5; 15 /(15 + 10)= 0.6等等。R的外部和?

所以,我得到一個N×N的矩陣與概率在這樣的結尾:

   10 15 30 
      10 0.5 0.6 0.75 
VResult = 15 0.4 0.5 0.66 
      30 0.25 0.33 0.5 

我需要的,所以我需要一種方法來計算這個這個簡單的例子應用到向量與32號。然後應該保存新的矩陣。如果你們能幫助我,這將是非常好的!

+0

哇 - 這很快,非常感謝你的答案@MrFlick –

回答

1

已經有用於外部功能,但也許這是最好寫一個讓你得到你想要什麼

outerMat <- function(V) { 
    n = length(V) 
    X = rep(V, each = n) 
    Y = rep(V, times = n) 
    M = matrix(X/(X + Y), nrow = n) 
    return(M) 
} 

A <- c(10, 15, 30) 

outerMat(A) 
    [,1]  [,2]  [,3] 
[1,] 0.50 0.6000000 0.7500000 
[2,] 0.40 0.5000000 0.6666667 
[3,] 0.25 0.3333333 0.5000000 

這需要大約65毫秒的長度爲1000的矢量,所以應該爲你的目的而行!等效的外部功能大約需要一半的時間。

1

假設B總是爲A相同的值,你可以用

outer(A, A, FUN=function(x,y) y/(x+y))