科学记数法格式化的R解决方案

3z6pesqy  于 2023-02-26  发布在  其他
关注(0)|答案(2)|浏览(136)

我正在寻找一个解决方案,使用标准格式 a × 10 b,在科学记数法下格式化R中的数字。这是一些同行评审的科学期刊所要求的,手工修改图形可能会变得乏味。
下面是一个R标准“E符号”的示例,以及我希望它的外观:

var<-0.00000000000000000000000000000031267781238
plot(1,main=var)

谢谢你的任何建议!

cngwdvgl

cngwdvgl1#

CRAN上最近版本的R包corto中的函数***scinot***提供了一个解决方案,该函数从单个值(或值的向量)生成表达式,然后可以使用正确的上标打印该表达式。
用法:

library(corto)    
scinot(0.00000543) # expression("5.43" ~ x ~ 10^"-6")

"图形"演示,摘自函数示例:

numbers<-c(3.456e-12,0.00901,5670000,-3.16e18,0.000004522,rnorm(5,sd=0.0000001))
plot(0,xlim=c(0,10),ylim=c(0,10),type="n")
text(c(2,6),c(10,10),labels=c("Before","After"),font=2)
for(i in 10:1){
    text(c(2,6),c(i-1,i-1),labels=c(numbers[i],scinot(numbers)[i]))
}

rkue9o1l

rkue9o1l2#

answer的启发,你可以使用这个函数(带时间和减号),如果你想要一个x,你可以使用"~ x ~ 10^"

scientific_10 <- function(x, ...) {
  parse(text = gsub("e", "%*%10^", scales::label_scientific(...)(x)))
}

plot(1, main = scientific_10(var, digits = 5))

相关问题