r - R:禁用科学记数法
问题描述
我正在使用 R 编程语言。在一些更大的数据上,我尝试了以下代码(制作决策树):
#load library
library(rpart)
#generate data
a = rnorm(100, 7000000, 10)
b = rnorm(100, 5000000, 5)
c = rnorm(100, 400000, 10)
group <- sample( LETTERS[1:2], 100, replace=TRUE, prob=c(0.5,0.5) )
group_1 <- sample( LETTERS[1:4], 100, replace=TRUE, prob=c(0.25, 0.25, 0.25, 0.25) )
d = data.frame(a,b,c, group, group_1)
d$group = as.factor(d$group)
d$group_1 = as.factor(d$group_1)
#fit model
tree <- rpart(group ~ ., d)
#visualize results
plot(tree)
text(tree, use.n=TRUE, minlength = 0, xpd=TRUE, cex=.8)
在视觉输出中,数字以科学计数法显示(例如 4.21e+06)。有没有办法禁用它?
我在stackoverflow上查阅了这个先前的答案:如何禁用科学记数法?
然后我尝试了以下命令:options(scipen=999)
但这似乎并没有解决问题。
有人可以告诉我我做错了什么吗?
谢谢
解决方案
我认为该labels.rpart
函数具有硬编码的科学记数法:它使用调用的私有函数formatg
使用格式进行sprintf()
格式化%g
,并且该函数忽略options(scipen)
. 您可以通过替换formatg
为更好的功能来覆盖它。这是一种危险的方法:
oldformatg <- rpart:::formatg
assignInNamespace("formatg", format, "rpart")
替换formatg
为标准format
功能。(这肯定会产生危险的副作用,所以之后你应该使用
assignInNamespace("formatg", oldformatg, "rpart")
更好的解决方案是重新调整数据。 rpart
仅对大数字切换到科学记数法,因此您可以将坏数字除以 1000 或 1000000,并将它们描述为不同的单位。对于您的示例,这对我有用:
library(rpart)
#generate data
set.seed(123)
a = rnorm(100, 7000000, 10)/1000
b = rnorm(100, 5000000, 5)/1000
c = rnorm(100, 400000, 10)/1000
group <- sample( LETTERS[1:2], 100, replace=TRUE, prob=c(0.5,0.5) )
group_1 <- sample( LETTERS[1:4], 100, replace=TRUE, prob=c(0.25, 0.25, 0.25, 0.25) )
d = data.frame(a,b,c, group, group_1)
d$group = as.factor(d$group)
d$group_1 = as.factor(d$group_1)
#fit model
tree <- rpart(group ~ ., d)
#visualize results
plot(tree)
text(tree, use.n=TRUE, minlength = 0, xpd=TRUE, cex=.8)
由reprex 包(v0.3.0)于 2021-01-27 创建
推荐阅读
- visual-studio - 尽管标记为 PrivateAssets,但 nuget 包中的项目依赖项仍被复制到应用程序 bin 文件夹
- javascript - AWS Amplify 在没有错误日志的情况下无法构建和编译
- javascript - 如何显示这个数组的元素?
- jakarta-ee - Jakarta EE 8 项目中的 Swagger 集成
- javascript - 有没有办法在 Jenkinsfile 中读取 dotenv 变量?
- mongodb - 查询失败 (JSInterpreterFailure) ReferenceError 缓冲区未在 mongodb 中定义
- r - 根据闪亮仪表板中匹配的条件浏览 tabitems
- php - 如何从WordPress中的帖子中删除发布按钮
- r - R - 次轴 - ggplot - 右轴未正确缩放
- .net - FSharp.Compiler.Service 编译为 dll 错误