【发布时间】:2016-10-17 21:33:02
【问题描述】:
在 R 中,我有一个相当大的数据框 (d),它是 10500 x 6000。所有值都是数字。 它的行和列中都有许多 na 值元素,我希望用零替换这些值。我用过:
d[is.na(d)] <- 0
但这相当慢。在 R 中有没有更好的方法来做到这一点?
我愿意使用其他 R 包。
如果讨论的重点是计算速度,而不是“为什么要用零替换 na”,我会更喜欢它。而且,虽然我意识到有人问过类似的问题 (How do I replace NA values with zeros in an R dataframe?),但重点并不是针对具有许多缺失值的大型数据帧的计算速度。
谢谢!
修改后的解决方案: 正如有用的建议,在应用 is.na 之前将 d 更改为矩阵将计算速度提高了一个数量级
【问题讨论】:
-
此数据框是否具有相同类型的列(即全数字或全字符)?将其存储为矩阵可能会加快速度。
-
经常转换为
data.table可以提高许多操作的速度,但is.na.data.table不是其中之一。 -
@ Spacedman,所有数字 - 抱歉应该指定。将编辑。
标签: r performance dataframe na