R中核矩阵的快速计算

时间:2013-06-05 15:08:22

标签: r matrix

我有一个n x p矩阵,想要计算定义为

的n x n矩阵B.
B[i, j] = f(A[i,], A[j,])

其中f是接受适当维度的参数的函数。在R中计算这个有一个巧妙的技巧吗? f是对称的和肯定的(如果这有助于计算)。

编辑:Praneet要求指定f。这是一个好点。虽然我认为为任何函数提供有效的解决方案会很有意思,但在f(x,y)为base :: norm(xy,type ='F'的重要情况下,我会从高效计算中获得很多里程数。 )。

1 个答案:

答案 0 :(得分:3)

您可以将outer与矩阵维度一起使用。

n <- 10
p <- 5
A <- matrix( rnorm(n*p), n, p )
f <- function(x,y) sqrt(sum((x-y)^2))
B <- outer( 
  1:n, 1:n, 
  Vectorize( function(i,j) f(A[i,], A[j,]) ) 
)