R测试数据帧中的double是否为零

R测试数据帧中的double是否为零,r,R,如果double是“零”,我如何才能最好地测试(并选择)。如果您尝试过这一点: 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 但由于结果不是零——一定是出了

如果double是“零”,我如何才能最好地测试(并选择)。如果您尝试过这一点:

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 

如果要检查某物(例如
x
)是否为零:

isTRUE(all.equal(x, 0))
但这并不能以我们所期望的方式真正地处理向量。因此,让我们合并:


如果要检查某物(例如
x
)是否为零:

isTRUE(all.equal(x, 0))
但这并不能以我们所期望的方式真正地处理向量。因此,让我们合并:


您正在测试全局环境中名为
权重的向量元素是否为零,并使用它对
data.frame的第一列进行子集划分。此向量与第一列相同吗?@ManInMoon现在尝试
summary(df.1[df.1$weights==0,1])
with(df.1,summary(weights[weights==0])
…您确定不会遇到机器舍入吗?也就是说,关于浮点二进制表示的常见FAQ,以及测试
abs(x)<.Machine.eps^2
而不是零的建议。除了上面给出的解决方案
摘要(子集(df.1,权重==0)[,1])
也应该起作用。您正在测试全局环境中名为
权重的向量元素是否为零,并使用它对
data.frame的第一列进行子集设置。此向量与第一列相同吗?@ManInMoon现在尝试
summary(df.1[df.1$weights==0,1])
with(df.1,summary(weights[weights==0])
…您确定不会遇到机器舍入吗?也就是说,关于浮点数二进制表示的常见问题解答,以及测试
abs(x)<.Machine.eps^2
而不是零的建议。除了上面给出的解决方案之外
摘要(子集(df.1,权重==0)[,1])
也应该有效。
subset(df.1, AlmostEqual(df.1$weights, 0))