我正在尝试使用lapply
函数(或实际上是mclapply
函数)而不是apply
函数来制定下面的代码。我希望它返回矩阵或类似的列表。hi
功能在我的实际代码中非常复杂,因此我刚刚提供了一个非常基本的示例。
hi <- function(a, matrix) {
hi <- a[1] / a[2] * t(matrix) %*% matrix
return(hi)
}
a_1 <- t(matrix(1:4))
a_2 <- t(matrix(5:8))
choleski <- matrix(1:4)
result <- apply(rbind(a_1, a_2), 2, hi, matrix=choleski)
因此,我的问题基本上是如何使用lapply
而不是apply
重新重新重新计算代码,即将lapply
函数应用于hi
函数,而不是使用apply
过程。有效的解决方案将很棒。
谢谢。
如果您的目标是将hi
应用于rbind(a_1, a_2)
的每一列,则可以做类似的事情:
A <- rbind(a_1, a_2)
sapply(seq_len(ncol(A)), function(i) hi(A[, i], choleski))
或更简单(如果可以使 rbind(a_1, a_2)
a data.frame可以):
A <- as.data.frame(rbind(a_1, a_2))
sapply(A, function(x) hi(x, choleski))
后者起作用,因为data.frame是一种列表类型(其中列为其元素),并且sapply
将功能应用于列表元素。默认情况下,sapply
在可能的情况下简化了其输出。