【发布时间】:2018-07-10 13:34:18
【问题描述】:
目前,我正在处理一个大数据集。在这个任务中我唯一要做的就是预处理数据。
当我运行我的代码时,我发现我的计算机内存在这行代码中增长得非常快:
binary <- ifelse(subset_variables1 == "0", 0, 1)
该行唯一应该做的就是将我所有的值变成二进制。这可以更快地完成吗?或者这已经是一种很好的方式(我必须处理内存问题)。
【问题讨论】:
-
如果需要 0/1 或 TRUE/FALSE 输出,则不需要使用 ifelse。只需运行比较本身并使用返回的逻辑向量。
-
binary <- subset_variables1 == "0" -
仅供参考,实际上有一个比
dplyr更快的ifelse:if_else -
试试
as.integer(subset_variables1 == "0")。将逻辑转换为整数将转换为 1 表示 TRUE 和 0 表示 FALSE。如果你这样做TRUE * 5和FALSE * 5你会看到区别 -
并且作为旁注,当转换为逻辑时,除 0 以外的任何整数都被视为 TRUE。你可以试试
as.logical(-3:3)
标签: r performance memory