我只是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,因此我需要一种方法来计算它。然后应保存新矩阵。如果你们能帮助我,真的很棒!
答案 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,所以应该可以满足您的需要!等效的外部函数大约需要一半的时间。