优化apply()

时间:2012-05-10 00:32:16

标签: r apply

我想优化以下代码。目前,它在2Ghz双核机器上运行大约0.085秒,具有2MB L2缓存,因为M是2404乘100的数字矩阵:

Rescale <- function( M = utility.mat){
  exp.M <- exp(M) 
  result <- apply(exp.M, 1, function(x) x/sum(x))
  result <- t(result)
  return (result)
}

我尝试用for循环替换apply(),这提供了相同的性能。还有其他想法吗?

1 个答案:

答案 0 :(得分:3)

这似乎比我的机器快了6倍:

Rescale1 <- function(M){
    M <- exp(M)
    result <- M / rowSums(M)
    return (result)
}

我想也许你可以通过致电.Internal(rowSums())来加快速度,但它没有成功。虽然这可能只是因为我没有正确使用它。

相关问题