> system.time(sapply(rnorm(1000000,0,1), function (x) round(x,2)))
user system elapsed
2.78 0.11 2.89
> system.time(round(rnorm(1000000,0,1),2))
user system elapsed
0.29 0.00 0.30
在阅读了R提示问题的答案后,我正在尝试这个。在上述情况下,我没想到蓝色比等效复合函数慢几个数量级。有谁知道为什么会这样?如果我理解正确,那么矢量化并接近最佳速度。
答案 0 :(得分:5)
system.time(sapply(rnorm(10), function (x) {print(length(x)); round(x,2)}))
答案 1 :(得分:2)
这里没有任何内容可供选择 - 你只给它一个向量 - 而不是向量列表,并将结果转换为(单列)矩阵。
sapply正在为您简化结果,但这样做必须生成一个数组。
比较你是否给它一个列表:
system.time(sapply(list(rnorm(1000000,0,1)), function (x) round(x,2)))
user system elapsed
0.22 0.00 0.22
system.time(sapply(rnorm(1000000,0,1), function (x) round(x,2)))
user system elapsed
4.21 0.00 4.21