我试图理解 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 个示例感到迷惑。
任何帮助将不胜感激!! 提前致谢。
最佳答案
总结: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 n=3 而给我们 0 300 600
相反,我也不能说。但是,当您请求 n=7
时,pretty 无法返回那么多步长为 100 的中间步骤。pretty
尝试尽可能接近最小值、最大值和 n。它切换到 50 的步长。
pretty (c(105,543), n=7)
[1] 100 150 200 250 300 350 400 450 500 550
https://stackoverflow.com/questions/62491568/