无法显示一个在R中带有近界的区间

问题描述 投票:0回答:1

我正在使用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的数字有更深的限制?

r set digits
1个回答
0
投票

如果您阅读了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"
© www.soinside.com 2019 - 2024. All rights reserved.