0

是否有任何可用资源,或者是否有人能够根据在 R 中实现某些东西的方式来解释速度上的严重差异?

我一直在处理巨大的矩阵并查看 R 中函数的执行时间。

即,与沿矩阵中的每个元素进行迭代相比,为什么将 ifelse 语句应用于矩阵的执行时间差异如此之大?

#Execution time ~1.5s
#dat : list object containing 5 matrices
#command finds the lowest non zero value from dat, if 0 then inf
do.call(pmin, lapply(dat, function(x) ifelse(x == 0, Inf, x)))

将上述应用到 1000x1000 矩阵需要不到 2 秒,但是应用几个沿每个元素迭代的 for 循环需要大约 15.6 秒。

我知道这可能与在 R 的 C 级别应用函数有关,如果可能的话,我希望得到一个清晰的解释。

谢谢

4

0 回答 0