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