r - 将函数应用于所有行(或列)对的有效方法

标签 r matrix function

给定一个矩阵(可以是非常大的维度),我如何有效地计算结果矩阵 d,每个值定义为 d[i,j] = fun(x[ , c(i,j)]) 对于一些给定的函数 fun

下面是一个例子

x = matrix(1:30, 5)
d = matrix(,ncol(x), ncol(x)) ## the output matrix
for(i in 1:ncol(x)) ## I use a for loop here, should find a more efficient way
for(j in 1:ncol(x)) 
d[i,j] = sum(apply(x[,c(i,j)], 1, min))

最佳答案

sapply 循环会稍微快一些

sapply(1:NCOL(x), function(i) sapply(1:NCOL(x), function(j){
    sum(apply(x[, c(i, j)], 1, min))
}))
#     [,1] [,2] [,3] [,4] [,5] [,6]
#[1,]   15   15   15   15   15   15
#[2,]   15   40   40   40   40   40
#[3,]   15   40   65   65   65   65
#[4,]   15   40   65   90   90   90
#[5,]   15   40   65   90  115  115
#[6,]   15   40   65   90  115  140

关于r - 将函数应用于所有行(或列)对的有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57616017/

相关文章:

matrix - 沿一个坐标轴的3D偏斜变换矩阵

c - 我对链表有一些问题

r - 以最有效的方式获取间隔期间的事件数

r - 更改ggplot2中geom_point()的默认点大小?

r - 如何在使用cbind循环R中创建一个空矩阵

function - ReactJs 全局辅助函数

javascript - 从javascript中的一组二维数组中提取偶数数组

r - ggvis:将多个数据集合并在一个图中

r - 在 Shiny 中使用基于绘图点击的条件面板

c - C中的结构矩阵