您可以使用lapply
,sapply
或vapply
具有类似的性能。 lapply
和vapply
比sapply
快一点,因为sapply
是lapply
的包装,它试图使结果更漂亮/更简单。
microbenchmark::microbenchmark(
vapply(c(1,2, 3), function(x) rt(2, df = 1, ncp=x), numeric(2L)),
sapply(1:3, function(x) rt(2, df = 1, ncp = x)),
lapply(1:3, function(x) rt(2, df = 1, ncp = x)),
vec.rt(2, df=1, ncp=1:3))
#Unit: microseconds
# expr min lq mean median uq max neval cld
#vapply 27.121 37.6095 51.61055 39.8825 42.4570 1226.199 100 a
#sapply 51.438 58.1725 72.89417 60.9150 63.4850 1255.270 100 ab
#lapply 29.484 34.0670 59.78256 36.8160 39.0755 2326.401 100 ab
#vec.rt 95.511 101.6985 106.15785 105.0770 108.2700 189.312 100 b
感谢您的比较!要记住的一点是'sapply'是'lapply'的封装,并且有一个额外的简化步骤,将输出转换为矩阵,这就增加了它的运行时间。 –