我有一个相当简单的问题,并且想知道你们中的一些人是否知道一个非常有效(=快速)的解决方案:
我有两个矩阵mat
和arr
,希望完成以下操作:获取arr
的每一列并从mat
中减去它。然后取一个减去对数差的绝对值的对数。就是这样。现在,我正在使用sapply
(见下文),但我很确定可以更快地完成它(可能使用sweep
?)
代码:
mat <- matrix(.3, nrow=10, ncol = 4)
arr <- matrix(.1, nrow=10, ncol = 10000)
i <- ncol(arr)
result <- sapply(1:i, function(ii) (log(1-abs(mat-arr[,ii]))))
感谢您的任何想法!
答案 0 :(得分:2)
我们可以复制,然后做出改变
result2 <- matrix(log(1- abs(rep(mat, ncol(arr)) -
rep(arr, ncol(mat)))), ncol = i)
identical(result, result2)
#[1] TRUE