【发布时间】:2019-01-30 19:42:04
【问题描述】:
我想对一些矩阵(大小相同)的对应元素应用一些函数,并返回每个应用程序的结果,以便将其添加到某个累加器中。最直观的方法是使用循环,但我正在处理大型数据集,循环耗时太长。
我知道函数的应用类,但我不太确定如何使用它们来累积每次迭代的结果。
这是我正在尝试做的一个小例子。
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 只是我为了举例而提出的任意函数。我应用于数据的函数更复杂。
【问题讨论】: