在 R 中使用“-1L”而不是“-1”是否有任何危险



我正在比较和替换(缺失)值作为管道的一部分。缺失值在我的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值编码为数字是劣质软件设计的标志。

我建议在导入过程中将这些值转换为NA

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

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

最新更新