Pretty()in R

afdcj2ne  于 2023-11-14  发布在  其他
关注(0)|答案(1)|浏览(106)

我试图理解R中的函数pretty(),遇到了麻烦。

temp <- pretty(1:5,n=5)
# temp is 1 2 3 4 5

temp <- pretty(1:6, n=6)
# temp is 1 2 3 4 5 6

temp <- pretty(1:3, n=3)
#temp is 1.0 1.5 2.0 2.5 3.0

temp <- pretty(1:3, n=2)
#temp is 1 2 3

temp <- pretty(1:15, n=3)
#temp is 0  2  4  6  8 10 12 14 16

字符串
我试着阅读文档,但仍然非常失去了我上面提供的底部3个例子。
任何帮助将不胜感激!!提前感谢。

de90aj5v

de90aj5v1#

摘要pretty返回一些模糊的结果。它遵循某些模式,但不能用于根据确切的规范创建向量,并且(我相信)这不是故意的。
详情

我想这些例子并不适合展示pretty()的效果。而且pretty的工作方式也不容易预测。我通常会提醒自己,它是为了为图表创建合理的刻度线而实现的。在图表中,你通常需要一个好的第一个和最后一个值,以及两者之间的相等步长。这有两个后果:

  • 在图表中,开始的刻度必须小于或等于我的min(x)数据点,最后一个刻度必须大于或等于max(x)
  • 一个图表需要在中间至少有一个刻度线(只有开始和结束对我来说似乎不合理)。我猜这就是为什么n=2不起作用。在图表中,我通常也不需要精确的刻度线。漂亮背后的想法是根据任何数据给你给予一些合理的刻度线。
  • 第三个原则可能有助于理解pretty:该函数忽略您输入的任何中间步骤。它提取最小值和最大值并从那里继续。这意味着pretty(1:5)pretty(c(1, 5))不应该有区别。

让我们仔细看看。这给出了一个解释它的结果:

pretty (c(105,543))
[1] 100 200 300 400 500 600

字符串
因此,我们得到一个“平衡”向量。平衡的意思是你得到相等的步长和四舍五入的起点和终点。在我们的例子中,它将105向下舍入为100,将543向上舍入为600。由于终点的基数为100,因此刻度线也是如此。

pretty (c(105,543), n=3)
[1] 0 200 400 600


它不能给予我们100 300 500,因为500 < 543。为什么它不保留n=3而给予我们0 300 600,我也不能说。但是当你请求n=7时,它不能返回那么多的中间步骤,步骤为100。pretty试图尽可能接近min,max和n。它切换到步长为50。

pretty (c(105,543), n=7)
[1] 100 150 200 250 300 350 400 450 500 550

相关问题