我正在寻找一个解决方案,使用标准格式 a × 10 b,在科学记数法下格式化R中的数字。这是一些同行评审的科学期刊所要求的,手工修改图形可能会变得乏味。下面是一个R标准“E符号”的示例,以及我希望它的外观:
var<-0.00000000000000000000000000000031267781238 plot(1,main=var)
谢谢你的任何建议!
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])) }
rkue9o1l2#
受answer的启发,你可以使用这个函数(带时间和减号),如果你想要一个x,你可以使用"~ x ~ 10^"。
x
"~ x ~ 10^"
scientific_10 <- function(x, ...) { parse(text = gsub("e", "%*%10^", scales::label_scientific(...)(x))) } plot(1, main = scientific_10(var, digits = 5))
2条答案
按热度按时间cngwdvgl1#
CRAN上最近版本的R包corto中的函数***scinot***提供了一个解决方案,该函数从单个值(或值的向量)生成表达式,然后可以使用正确的上标打印该表达式。
用法:
"图形"演示,摘自函数示例:
rkue9o1l2#
受answer的启发,你可以使用这个函数(带时间和减号),如果你想要一个
x
,你可以使用"~ x ~ 10^"
。