通过data.table的by参数对一个data.table进行分组计算,每一组都调用一个自定义函数进行计算。这种方式的确使得代码简洁很多,但有一个非常大的疑问:
data.table分组调用自定义函数进行计算所耗用的时间,与for循环调用自定义函数耗时几乎是一样的,也就是说data.table分组计算并没有使得效率提升。
仅仅简化代码这不应该是data.table分组计算的初衷,提升效率才是王道,某些测试(比如在 j 位置使用lapply函数)也表明分组计算的确大幅提升了速度,然而在调用自定义函数的实际应用中却并非如此。
问题出在哪呢?