r - 了解剪切输出

标签 r

我无法理解以下剪切行为。

> data = seq(0,1,.2)
> data
[1] 0.0 0.2 0.4 0.6 0.8 1.0
> cuts = cut(data, c(0, 0.25, 0.5, .6, 0.9, Inf))
> summary(cuts)
  (0,0.25] (0.25,0.5]  (0.5,0.6]  (0.6,0.9]  (0.9,Inf]       NA's 
         1          1          0          2          1          1

根据我的理解,cut 所形成的间隔在右侧闭合。因此区间 (0.5,0.6] 应该有 1 个元素 (.6) 而不是 0。同样,区间 (0.6,0.9] 应该只有 1 个元素而不是 2。

我哪里错了。

最佳答案

这与 seq 生成的数字中的一个轻微错误有关:

> data[4] - 0.6
[1] 1.110223e-16

从中,您可以看到 data[4]0.6 稍大,因此它会上升到下一个存储桶。

原因是因为并非所有数字都可以在任何不具有无限存储空间的编码方案中精确表示。您所能期望的最好结果就是足够接近的近似值。在本例中,阶数为 10-1 的值的 10-16 误差很小,但非零。

关于r - 了解剪切输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29406868/

相关文章:

sql - 清理/操作大数据的解决方案(目前使用 Stata)

windows - rhdfs没有建立连接

r - R 是否区分字符向量和字符串?

r - 最接近的非 NA 值

r - 选择仅包含特定列中数字的 data.frame 行

使用 purrr 根据列表名称重命名列表列

javascript - 手动 Shiny 扩展子菜单项

r - 在 R 中使用 ggplot2 表达三个变量之间的关系

r - ifelse 只返回数值

r - 箱线图两个变量,根据第三个变量的平均值对它们进行着色