如何在 rpart 回归树图中将绘制的数字从科学记数法更改为标准形式?

How can I change plotted numbers from scientific notation to standard form in an rpart regression tree plot?

我正在使用 rpart.plot 包来绘制回归树。如何将树底部的数字从科学记数法转换为标准形式?比如我想把14e+3改成14000.

这是我使用的代码:

library(rpart.plot)
rpart.plot(tm1, type=5, digits = 2, fallen.leaves = T)

结果如下:

这是一个棘手的问题,因为包作者决定用科学记数法进行硬编码。

如果我们查看 source code,有一个 函数 rpart.plot:::format0 格式化 0.0019999.

之间的任何值

因此,一种方法是创建一个覆盖这些默认值的副本,并将其分配到 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)