【发布时间】:2018-11-15 22:35:12
【问题描述】:
我刚刚阅读了@David Arenburg 的个人资料,发现了一堆关于如何培养良好的 R 编程技能/习惯的有用技巧,其中一个让我印象深刻。我一直认为 R 中的应用函数是处理数据帧的基石,但他写道:
如果您正在使用 data.frames,请忘记有一个名为的函数 应用 - 无论你做什么 - 不要使用它。尤其是边距为 1 (这个函数唯一好的用例是对矩阵进行操作 列 - 边距为 2)。
一些不错的选择:?do.call、?pmax/pmin、?max.col、 ?rowSums/rowMeans/etc,很棒的 matrixStats 包(对于 矩阵)、?rowsum 等等
谁能给我解释一下?为什么 apply 函数不受欢迎?
【问题讨论】:
-
我实际上是在专门谈论
apply- 而不是整个*apply家族。apply的主要问题是它将整个数据转换为一个矩阵,这会弄乱数据(因为matrix不能像数据框那样存储不同的类),因此会产生意想不到的结果。因此,在对列进行操作时,最好使用*apply系列的其余部分,例如lapply或sapply。另一方面,因为 R 是向量化语言apply,边距为 1 将非常慢(不管matrix问题),因此我提出使用向量化替代方案。 -
啊哈,我明白了,非常感谢您解决这个问题!
-
另外,this is 是关于
*apply家族的有用读物。 -
太棒了!再次感谢:)