【发布时间】:2016-04-28 07:52:54
【问题描述】:
作为管道的一部分,我正在比较和替换(缺失)值。缺失值在我的data.table 中标记为-9。
在比较中使用-9L 有什么危险吗?
> x <- -9
> typeof(x)
[1] "double"
>
> y <- -9L
> typeof(y)
[1] "integer"
例子:
dfmelt[value == -9L, code := paste0("0", "0")]
对比:
dfmelt[value == -9, code := paste0("0", "0")]
【问题讨论】:
-
如果
value的类型是整数,这无关紧要。如果它是分配的双倍,那也没关系。如果它是双精度并且是计算的结果,则无论如何都不应该使用==(由于浮点数精度)。当然,将NA值编码为数字是软件设计低劣的标志。 -
如需进一步阅读上述评论和浮点错误,this is worth a glance。
-
@Roland 谢谢,你能把你的评论写下来作为答案吗?不幸的是,我们在这里经常使用 ASCII 文件。他们伴随着头痛!并且感谢 Alistaire,我实际上已经阅读了那本书的一部分,也许我应该继续阅读:)
标签: r int double negative-number