我遇到了cut
的以下不一致行为,让我头疼:
x <- 0.2316
cut(x, c(0, 0.2315, 10)) #gives 0.232 as cutpoint and choses second interval
## [1] (0.232,10]
## Levels: (0,0.232] (0.232,10]
cut(x, c(0, 0.232, 10)) #choses first interval when taking the same cutpoint it just gave (0.232)
## [1] (0,0.232]
## Levels: (0,0.232] (0.232,10]
问题是cut
似乎在格式化(舍入)切割点之前选择了间隔。这导致示例中的不一致行为,即它选择第二个区间但是会根据给定的切割点选择第一个区间(可以在最后一行中看到)。
这对我来说是一个问题,因为我的包中有两个函数:一个是计算切割点,另一个是确定放置新数据点的正确间隔。在上面的示例中,相同的数据点放入第一个函数的第二个区间,但放入第二个函数的第一个区间 - 显示完全相同的切割点!这可能会导致我的包裹出现一些奇怪的行为!
我的问题
这是一个已知的问题?如果有,是否有任何解决方法?谢谢
修改
我知道您可以使用dig.lab
更改小数位数但如果您的小数位数更多,则会出现同样的问题。上面的例子只是一个更普遍问题的演示!
答案 0 :(得分:0)
我刚刚查看了cut.default
的源代码,我认为一种解决方法是在调用{{1}之前应用breaks
上打印输出上应用的相同格式功能:
cut
然后至少一切都是一致的(所以在这种情况下,在两种情况下都会选择第一个间隔)。
然而,这仅适用于您明确设置切割点的情况!