R中使用`-1L`而不是`-1`有危险吗?

时间:2016-04-28 07:52:54

标签: r int double negative-number

我将比较和替换(缺失)值作为我的管道的一部分。遗漏的值在我的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")]   

1 个答案:

答案 0 :(得分:1)

如果value的类型是整数,那么这并不重要。如果它是指定的双精度,那么它也不重要。如果它是计算的双倍和结果,那么你不应该使用==(由于floating point number precision)。当然,将NA值编码为数字是劣质软件设计的标志。

我建议在导入期间将这些值转换为NA

read.table(text = "1,2,-9", sep = ",", na.strings = "-9")
#  V1 V2 V3
#1  1  2 NA

然后您可以使用is.na并避免此问题。