1

如果双精度为“零”,我如何最好地测试(和选择)。如果试过这个:

summary(df.1[weights==0,1])
          Min.    1st Qu.     Median       Mean    3rd Qu.       Max.       NA's 
    -100880.000      0.000      0.000      1.179      0.000   90993.000      17597 

但由于结果非零 - 一定有问题。

编辑 1 我确保 colname 是正确的 - 但我仍然得到同样的错误:

head(df.1)
       weights
1   0.00000
2 -57.09428
3   0.00000
4   0.00000

    summary(df.1[weights==0,1])
              Min.    1st Qu.     Median       Mean    3rd Qu.       Max.       NA's 
        -100880.000      0.000      0.000      1.179      0.000   90993.000      17597 
4

1 回答 1

4

如果你想检查某个东西,比如说x,是否为零:

isTRUE(all.equal(x, 0))

但这并不能以我们期望的方式真正适用于向量。所以让我们合并这个解决方案

AlmostEqual <- function(x, y, tolerance=1e-8) {
  diff <- abs(x - y)
  mag <- pmax(abs(x), abs(y))
  ifelse(mag > tolerance, diff/mag <= tolerance, diff <= tolerance)
}

然后:

subset(df.1, AlmostEqual(df.1$weights, 0))
于 2014-07-30T20:00:34.170 回答