【问题标题】:trouble with converting values to scientific notation 1e-3 from 0.001 etc将值从 0.001 等转换为科学记数法 1e-3 时遇到问题
【发布时间】:2016-09-13 01:51:04
【问题描述】:

我知道这可能是个愚蠢的问题,但我认为事情应该更清楚。我的意思是将数字从普通格式转换为科学格式,例如从通常的 0.001 格式转换为 1e-3 格式。

我知道有一些类似的问题,但关键是我想在不更改全局 options(scipen) 的情况下执行此过程。在我的情况下,总是先将options(scipen) 更改为我不希望更改它们的其他值并不是很好的用途。

这就是我的意思,假设我们有这样的数据

set.seed(12345)
set =rep(rep(c("1","2"),each=5),times=1)
V=rep(seq(1,1.4,0.1),times=2)
value <- replicate(1,c(replicate(2,sort(10^runif(5,-3,0),decreasing=FALSE))))
data_rep <- data.frame(V, value,set)

#> data_rep
#     V       value set
#1  1.0 0.002351715   1
#2  1.1 0.005382811   1
#3  1.2 0.023703932   1
#4  1.3 0.058314556   1
#5  1.4 0.476184589   1
#6  1.0 0.001595635   2
#7  1.1 0.001896175   2
#8  1.2 0.034667861   2
#9  1.3 0.097931107   2
#10 1.4 0.197982134   2

试用 1

当我们做options(scipen=-10)

#> data_rep
#         V        value set
#1  1.0e+00 2.341224e-02   1
#2  1.1e+00 1.454493e-01   1
#3  1.2e+00 1.918435e-01   1
#4  1.3e+00 4.239548e-01   1
#5  1.4e+00 4.553797e-01   1
#6  1.0e+00 3.155843e-03   2
#7  1.1e+00 9.446831e-03   2
#8  1.2e+00 3.370335e-02   2
#9  1.3e+00 1.524459e-01   2
#10 1.4e+00 9.315600e-01   2

我们可以看到这次 V 列也发生了变化,这在绘图时不好

qplot(data=data_rep,x=V,y=value)

试用 2

使用format函数改变格式

  options(scipen = 0)
    library(dplyr)
    df_format <- data_rep%>%
  mutate(value=as.numeric(format(value,scientific=TRUE,digits=4))) %>%
  mutate(logic=ifelse(value<2e-1,TRUE,FALSE))

#       > df_format
#     V    value set logic
#1  1.0 0.023410   1  TRUE
#2  1.1 0.145400   1  TRUE
#3  1.2 0.191800   1  TRUE
#4  1.3 0.424000   1 FALSE
#5  1.4 0.455400   1 FALSE
#6  1.0 0.003156   2  TRUE
#7  1.1 0.009447   2  TRUE
#8  1.2 0.033700   2  TRUE
#9  1.3 0.152400   2  TRUE
#10 1.4 0.931600   2 FALSE

我们可以看到,值列更改为原始格式。我们如何在value 列中保留科学记数法?

【问题讨论】:

  • 您应该做的是保留科学记数法并以编程方式更改标签

标签: r


【解决方案1】:

所有关于这方面的既定智慧似乎都分为两个阵营。一个阵营说在options 中使用scipen,由于您描述的原因,您不喜欢它。

另一种解决方案是在绘制图形时保留科学记数法并替换刻度线标签。

您可以使用formatscientific=F 来创建非科学刻度标记标签。本指南展示了如何为不同的 ggplot2 图自定义这些标签:

http://www.sthda.com/english/wiki/ggplot2-axis-ticks-a-guide-to-customize-tick-marks-and-labels

【讨论】:

  • 是的,你是对的。我知道我可以更改 ggplot 的格式,但我希望有一个没有scipen 的替代方案。
猜你喜欢
  • 2015-07-03
  • 1970-01-01
  • 2022-01-24
  • 2014-09-25
  • 2021-12-23
  • 1970-01-01
  • 1970-01-01
  • 2020-08-02
  • 1970-01-01
相关资源
最近更新 更多