R中的外部总和?

时间:2017-04-19 19:59:34

标签: r excel matrix vector sum

我只是R的初学者,但到目前为止找不到我的问题的解决方案。如何从这样的两个向量中创建矩阵?在Excel中它很简单,但我怎么能在R?中做到这一点?

A = c(10,15,30)
B = transpose(A) --> the transposed matrix of A
=>  10
    15 
    30

我也想进行计算:A /(A + B) - > 10 /(10 + 10)= 0.5; 15 /(15 + 10)= 0.6,依此类推。

这样我最终会得到一个n x 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个数字的Vector,因此我需要一种方法来计算它。然后应保存新矩阵。如果你们能帮助我,真的很棒!

2 个答案:

答案 0 :(得分:1)

假设B始终与A具有相同的值,您可以使用

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

答案 1 :(得分: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,所以应该可以满足您的需要!等效的外部函数大约需要一半的时间。