如何在 rpart 回归树图中将绘制的数字从科学计数法更改为标准形式?
Posted
技术标签:
【中文标题】如何在 rpart 回归树图中将绘制的数字从科学计数法更改为标准形式?【英文标题】:How can I change plotted numbers from scientific notation to standard form in an rpart regression tree plot? 【发布时间】:2020-12-04 00:00:37 【问题描述】:我正在使用rpart.plot
包来绘制回归树。如何将树底部的数字从科学记数法转换为标准形式?比如我想把14e+3
改成14000
。
这是我正在使用的代码:
library(rpart.plot)
rpart.plot(tm1, type=5, digits = 2, fallen.leaves = T)
结果如下:
【问题讨论】:
如果您包含一个简单的reproducible example,其中包含可用于测试和验证可能解决方案的示例输入和所需输出,则更容易为您提供帮助。 我附上了回归树图。我希望这会有所帮助 这不允许我们运行和测试代码以寻找可能的解决方案。 可能是这样的:***.com/questions/5963047/… options(scipen=999) 能解决问题吗? 【参考方案1】:这是一个棘手的问题,因为包作者决定用科学记数法进行硬编码。
如果我们查看source code,有一个
函数rpart.plot:::format0
格式化0.001
和9999
之间的任何值。
因此,一种方法是创建一个覆盖这些默认值的副本并将其分配到 rpart.plot
命名空间。
首先,一个示例树:
library(nycflights13)
library(rpart.plot)
fit <- rpart(carrier ~ origin + distance, data = flights[flights$carrier %in% c("UA","AA","DL"),])
rpart.plot(fit, type = 5, digits = 2, fallen.leaves = TRUE, extra = 101)
注意科学记数法。
现在,我们将创建副本并将其命名为 myformat0
。我们需要为几个函数使用:::
,因为它们不是从rpart.plot
导出的。请注意,我将9999
替换为100000
,但您可以使用任何您想要的数字。
myformat0 <- function(x, digits=2)
rpart.plot:::check.integer.scalar(digits)
if(digits == 0)
digits <- getOption("digits")
if(digits >= 0)
rpart.plot:::formate(x, digits, smallest=.001, largest=100000)
else
sapply(x, format, digits=-digits)
现在我们需要将自定义函数分配到rpart.plot
命名空间。我们可以使用assignInNamespace
:
assignInNamespace("format0", myformat0, ns = "rpart.plot")
现在剧情:
rpart.plot(fit, type = 5, digits = 2, fallen.leaves = TRUE, extra = 101)
【讨论】:
哇,谢谢你的帮助。这很有帮助以上是关于如何在 rpart 回归树图中将绘制的数字从科学计数法更改为标准形式?的主要内容,如果未能解决你的问题,请参考以下文章