6

我有一个 nxp 矩阵,想计算定义为的 nxn 矩阵 B

B[i, j] = f(A[i,], A[j,])

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

编辑:Praneet 要求指定 f。这是一个好点。尽管我认为对任何函数都有一个有效的解决方案会很有趣,但在 f(x, y) 为 base::norm(xy, type='F' 的重要情况下,我将从有效计算中获得很多好处)。

4

1 回答 1

4

您可以使用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,]) ) 
)
于 2013-06-06T08:01:25.363 回答