我想将一些函数应用于某些矩阵(大小相同)的相应元素,并返回每个应用程序的结果,以便可以将其添加到某个累加器中。做到这一点最直观的方法是使用循环,但是我正在处理大型数据集,并且循环花费的时间太长。
我知道函数的应用类,但是我不太确定如何使用它们来累积每次迭代的结果。
这是我要做的事的一个小例子。
mat <- matrix(c(0, 1, 2, 3, 2, 9, 5, 1, 1, 1, 0, 0, 5, 5, 2, 0), 4, 4)
mat2 <- matrix(c(1, 1, 3, 1, 6, 2, 9, 2, 0, 1, 3, 2, 0, 1, 2, 1), 4, 4)
mat3 <- matrix(c(0, 4, 6, 1, 0, 4, 3, 8, 9, 1, 3, 0, 9, 9, 8, 8), 4, 4)
some_function <- function(num1, num2, num3) {
return(num1 * num2 + num3)
}
accum <- 0.1
for (i in 1:nrow(mat)) {
for (j in 1:ncol(mat)) {
accum <- accum + log(1 + some_function(mat[i,j], mat2[i,j], mat3[i,j]+10))
}
}
这给出了正确的答案,但是我想做到没有循环。还要注意,some_function只是我为了示例而提出的任意函数。我要应用于数据的功能更加复杂。
答案 0 :(得分:1)
您不需要申请,只需运行功能即可。
accum <- 0.1+sum(log(1+(some_function)(mat,mat2,mat3+10)))
更快更干净。