R中的浮点困难,尤其是Hmisc的minor.tick

菱形十二面体

当我打电话

library(Hmisc)
plot(...)
minor.tick(...)

偶尔我会遇到以下错误:

Error in seq.default(low.minor, hi.minor, by = distance.between.minor) : 
  'to' cannot be NA, NaN or infinite
In addition: Warning message:
In max(possible.minors[possible.minors <= range[2]]) :
  no non-missing arguments to max; returning -Inf

其中minor.tick有以下几行:

range <- par("usr")[if (w == "x") 1:2 else 3:4]
tick.pos <- if (w == "x") par("xaxp") else par("yaxp")
...
possible.minors <- tick.pos[2] + (0:100) * distance.between.minor
hi.minor <- max(possible.minors[possible.minors <= range[2]])

当我打印出来的价值观possible.minorsrange[2],我看到的,例如,

> possible.minors [1] 1.20 1.24 1.28 1.32 1.36 1.40 1.44 1.48 1.52 1.56 1.60 1.64 1.68 1.72 1.76 [16] 1.80 1.84 1.88 1.92 1.96 2.00 2.04 2.08 2.12 2.16 2.20 2.24 2.28 2.32 2.36 [31] 2.40 2.44 2.48 2.52 2.56 2.60 2.64 2.68 2.72 2.76 2.80 2.84 2.88 2.92 2.96 [46] 3.00 3.04 3.08 3.12 3.16 3.20 3.24 3.28 3.32 3.36 3.40 3.44 3.48 3.52 3.56 [61] 3.60 3.64 3.68 3.72 3.76 3.80 3.84 3.88 3.92 3.96 4.00 4.04 4.08 4.12 4.16 [76] 4.20 4.24 4.28 4.32 4.36 4.40 4.44 4.48 4.52 4.56 4.60 4.64 4.68 4.72 4.76 [91] 4.80 4.84 4.88 4.92 4.96 5.00 5.04 5.08 5.12 5.16 5.20

> range[2] [1] 1.2

最终给了我们

> possible.minors[1]
[1] 1.2
> range[2]
[1] 1.2
> possible.minors[1] <= range[2]
[1] FALSE

因此1.2不小于或等于1.2。好吧,很明显这里有些浮点废话。我该如何解决?

附录:

当我打印更多数字时,我发现

> print(possible.minors[1], digits=20)
[1] 1.2000000000000001776
> print(range[2], digits=20)
[1] 1.1999999999999999556

这个包的作者似乎预料到了这一点,因为下一行将检查结果是否为NA,如果是,则分配一个值。也许这在R的早期版本中有效,但现在看来会导致程序包崩溃。无论如何,我认为正确的方法是检查是否存在使不等式成立的任何值,如果是,则选择最大值,否则选择其他方法。现在,我可以在自己的机器上实施此更改,但是如何将其提供给世界各地的Hmisc用户?

菱形十二面体

我已将此问题发布在Hmisc github上

我认为一种快速的解决方案是更改线路

if (is.na(low.minor))

if (is.na(hi.minor))

if (is.na(low.minor) || is.infinite(low.minor))

if (is.na(hi.minor) || is.infinite(hi.minor))

但是更好的解决方案是先检查是否

any(possible.minors >= range[1])

any(possible.minors <= range[2])

在进行任何索引之前,避免警告消息。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

熊猫情节中的小tick

来自分类Dev

javascript for canvas中的tick方法

来自分类Dev

在Redstorm DSL中实现Storm tick tuple

来自分类Dev

在Timer.Tick中调用Stop Timer

来自分类Dev

延迟globalTick()JS中每个Sprite的tick()

来自分类Dev

tick(grid)被D3.js中的Y轴覆盖

来自分类Dev

在timer_tick中获取当前计时器

来自分类Dev

R:如何在函数中添加参数(尤其是“ ...”)?

来自分类Dev

以tck和col.tick为参数的R中的轴功能

来自分类Dev

jquery 中的 fx 对象中的 (step,tick,timer,start,stop,speeds) 属性是什么?

来自分类Dev

为什么我们需要force.on(d3中的'tick'..

来自分类Dev

Linux外壳中的任何东西都使用“ tick”或“ acute accent”字符(不是`)吗?

来自分类Dev

Chronograf 仪表板中的 TICK-STACK 表视图格式

来自分类Dev

如何逃避tick虫

来自分类Dev

如何调用tick()方法

来自分类Dev

Java中的typedef,尤其是数组类型

来自分类Dev

Java中的typedef,尤其是数组类型

来自分类Dev

尽管调用了tick_params并使用了NullLocator,但左刻度线仍保留在matplotlib中

来自分类Dev

在DC.js图表中缩放y-tick标签(在下面的D3.js)

来自分类Dev

弄乱网页中的字符(尤其是社交媒体)

来自分类Dev

一般缓存,尤其是MVC中的缓存

来自分类Dev

JSF组件中的按键处理,尤其是<p:tree>

来自分类Dev

无法打开https,尤其是在phantomjs中打开salesforce网站

来自分类Dev

弄乱网页中的字符(尤其是社交媒体)

来自分类Dev

“禁止服务:用户\“ system:serviceaccount:tick:external-dns \”无法在群集范围内的API组\“ \”中列出资源\“ services \”

来自分类Dev

Matplotlib显示重叠的x-tick标签

来自分类Dev

tick刻到数十年

来自分类Dev

Setting a specific number of tick marks on MATLAB plot

来自分类Dev

Set time for one tick mark in cesium

Related 相关文章

  1. 1

    熊猫情节中的小tick

  2. 2

    javascript for canvas中的tick方法

  3. 3

    在Redstorm DSL中实现Storm tick tuple

  4. 4

    在Timer.Tick中调用Stop Timer

  5. 5

    延迟globalTick()JS中每个Sprite的tick()

  6. 6

    tick(grid)被D3.js中的Y轴覆盖

  7. 7

    在timer_tick中获取当前计时器

  8. 8

    R:如何在函数中添加参数(尤其是“ ...”)?

  9. 9

    以tck和col.tick为参数的R中的轴功能

  10. 10

    jquery 中的 fx 对象中的 (step,tick,timer,start,stop,speeds) 属性是什么?

  11. 11

    为什么我们需要force.on(d3中的'tick'..

  12. 12

    Linux外壳中的任何东西都使用“ tick”或“ acute accent”字符(不是`)吗?

  13. 13

    Chronograf 仪表板中的 TICK-STACK 表视图格式

  14. 14

    如何逃避tick虫

  15. 15

    如何调用tick()方法

  16. 16

    Java中的typedef,尤其是数组类型

  17. 17

    Java中的typedef,尤其是数组类型

  18. 18

    尽管调用了tick_params并使用了NullLocator,但左刻度线仍保留在matplotlib中

  19. 19

    在DC.js图表中缩放y-tick标签(在下面的D3.js)

  20. 20

    弄乱网页中的字符(尤其是社交媒体)

  21. 21

    一般缓存,尤其是MVC中的缓存

  22. 22

    JSF组件中的按键处理,尤其是<p:tree>

  23. 23

    无法打开https,尤其是在phantomjs中打开salesforce网站

  24. 24

    弄乱网页中的字符(尤其是社交媒体)

  25. 25

    “禁止服务:用户\“ system:serviceaccount:tick:external-dns \”无法在群集范围内的API组\“ \”中列出资源\“ services \”

  26. 26

    Matplotlib显示重叠的x-tick标签

  27. 27

    tick刻到数十年

  28. 28

    Setting a specific number of tick marks on MATLAB plot

  29. 29

    Set time for one tick mark in cesium

热门标签

归档