Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我有一个 nxp 矩阵,想计算定义为的 nxn 矩阵 B
B[i, j] = f(A[i,], A[j,])
其中 f 是一个接受适当维度参数的函数。在 R 中是否有一个巧妙的技巧来计算这个?f 是对称且正定的(如果这有助于计算)。
编辑:Praneet 要求指定 f。这是一个好点。尽管我认为对任何函数都有一个有效的解决方案会很有趣,但在 f(x, y) 为 base::norm(xy, type='F' 的重要情况下,我将从有效计算中获得很多好处)。
您可以使用outer矩阵尺寸。
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,]) ) )