我正在使用sets
中的R
包来尝试创建一个上限为1且下限非常接近1的封闭区间。问题是在间隔时间内我得到一些奇怪的行为。调用时,它将显示为仅包含下限的单例集,但是当我要求间隔中的最小值或最大值时,它将为我提供正确的值。当我查看间隔的结构时,它会将两个边界都显示为一个。
library(sets);
options(digits = 15);
#Set lower bound and interval
L <- 0.999999999989428;
INT <- sets::interval(l = L, r = 1, bounds = 'closed')
#Print interval and show details
INT;
{0.999999999989428}
min(INT);
[1] 0.999999999989428
max(INT)
[1] 1
str(INT);
List of 1
$ :List of 4
..$ l : num 1
..$ r : num 1
..$ lc: logi TRUE
..$ rc: logi TRUE
- attr(*, "domain")= chr "R"
我希望能够构造这种区间,其下限接近一个。我需要它们正确打印,以封闭的间隔显示正确的上下限。尽管不是很重要,但理想情况下,我还希望结构调用显示正确的界限。
问题:是否有某种方法可以确保间隔会打印并以正确的边界显示其结构?如果不是,这是sets
软件包的问题,还是对R
中接近1的数字有更深的限制?
如果您阅读了str()
的帮助文章,则会看到要打印的默认小数位数(digits.d)为3。设置options(digits = 15)
不会更改str()
中的默认值。您要做的就是更改args函数中的位数:
str(INT,digits.d=15)
List of 1
$ :List of 4
..$ l : num 0.999999999989428
..$ r : num 1
..$ lc: logi TRUE
..$ rc: logi TRUE
- attr(*, "domain")= chr "R"