【问题标题】:R function pretty() not showing expected resultR函数漂亮()未显示预期结果
【发布时间】:2021-04-14 16:24:08
【问题描述】:

我在编程 R 方面不是那么好,也许有人可以帮助我。 我在一些直方图上使用了 pretty() 函数(用于中断 =),但有时会出错。进一步的测试使我得到以下结果:

pretty(-1:1,n=20)

[1] -1.0 -0.9 -0.8 -0.7 -0.6 -0.5 -0.4 -0.3 -0.2 -0.1 0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0

这就是我所期望的,还有以下代码行

pretty(-26:71,n=18)

[1] -30 -25 -20 -15 -10 -5 0 5 10 15 20 25 30 35 40 45 50 55 60 65 70 75

但是 - 问题来了,使用 pretty() 会带来完全错误的结果(甚至没有超过零)

pretty(-0.26:0.71,n=10)

[1] -0.35 -0.30 -0.25 -0.20

谁能向我解释我做错了什么?感谢您的帮助!

【问题讨论】:

  • 也许你的意思是pretty(seq(-0.26, 0.71, .01), n=10)-0.26:0.71 is.equal to -.26 as : 生成步长为 1 的序列。

标签: r


【解决方案1】:

help(pretty)pretty 的描述很好地说明了目的:

计算一个由大约 n+1 个等间距的“圆形”值组成的序列,这些值覆盖了 x 中的值的范围。选择的值是 10 的 1、2 或 5 倍。

您的第一个电话包括序列-1:1

-1:1
[1] -1  0  1

pretty(-1:1,n=20)
 [1] -1.0 -0.9 -0.8 -0.7 -0.6 -0.5 -0.4 -0.3 -0.2 -0.1  0.0  0.1  0.2
[14]  0.3  0.4  0.5  0.6  0.7  0.8  0.9  1.0

您有一些不错的值,涵盖 -11。您的第二次通话也是如此。

但是,您的第三个调用包含序列-0.26:0.71。以下是等价的:

-0.26:0.71
[1] -0.26
seq(-0.26,0.71,by = 1)
[1] -0.26

由于-0.260.711 更接近,因此您只会返回一个值。

因此,pretty(-0.26,n=10)-0.26 周围形成了一个很好的序列:

pretty(-0.26,n=10)
[1] -0.35 -0.30 -0.25 -0.20

也许你更喜欢这个:

pretty(c(-0.26,0.71),n=10)
 [1] -0.3 -0.2 -0.1  0.0  0.1  0.2  0.3  0.4  0.5  0.6  0.7  0.8

pretty 的底层代码有些复杂。但是您可以通过在控制台输入pretty.default 并查看C 源代码here 来查看该功能。

【讨论】:

    【解决方案2】:

    另一种处理方法是先乘以 10,然后再除以 10。

     pretty((10*-0.26):(10*0.71), n=10)/10
     [1] -0.3 -0.2 -0.1  0.0  0.1  0.2  0.3  0.4  0.5  0.6  0.7
    

    【讨论】:

      猜你喜欢
      • 2022-08-14
      • 1970-01-01
      • 2011-10-02
      • 2019-04-05
      • 1970-01-01
      • 2022-01-20
      • 2018-12-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多