在 R 中,使用科学记数法 10^ 而不是 e+

Posted

技术标签:

【中文标题】在 R 中,使用科学记数法 10^ 而不是 e+【英文标题】:In R, using scientific notation 10^ rather than e+ 【发布时间】:2015-04-22 00:26:24 【问题描述】:

可能有人问过这个问题,但我没有找到一个简单的解决方案。有没有办法将数字转换为其科学记数法,但以 10^ 的形式而不是默认的 e+ 或 E+?所以 1000 会变成 1*10^3 而不是 1e+3。谢谢!

【问题讨论】:

你想以这种格式保存数字还是直接打印它们? 在哪里?只是在控制台中?总是?对于每个数字? 嗨!好点子。我猜控制台会工作。最终我希望将数字打印到情节中,但如果它适用于控制台,情节应该显示与我认为相同的内容。此外,这个问题通常发生在像 1000000 这样非常大的数字上,因为 R 会自动将其转换为 1e+6。 因为您写“最终我希望将数字打印到情节”,this Q&A 似乎相关。 【参考方案1】:

要打印数字,您可以将其视为字符串并使用sub 重新格式化:

changeSciNot <- function(n) 
  output <- format(n, scientific = TRUE) #Transforms the number into scientific notation even if small
  output <- sub("e", "*10^", output) #Replace e with 10^
  output <- sub("\\+0?", "", output) #Remove + symbol and leading zeros on expoent, if > 1
  output <- sub("-0?", "-", output) #Leaves - symbol but removes leading zeros on expoent, if < 1
  output

一些例子:

> changeSciNot(5)
[1] "5*10^0"
> changeSciNot(-5)
[1] "-5*10^0"
> changeSciNot(1e10)
[1] "1*10^10"
> changeSciNot(1e-10)
[1] "1*10^-10"

【讨论】:

以上是关于在 R 中,使用科学记数法 10^ 而不是 e+的主要内容,如果未能解决你的问题,请参考以下文章

如何在 R 中只打印 4 位而不是科学记数法的 p 值?

在 R 中使用带有 xtable 的科学记数法

Colorbar 科学记数法,将 e^ 改为 10^

控制科学记数法的位数(例如 e-3 而不是 e-03)

订单编号复制到电子表格中为啥变成科计数法了

是否有用于转换非标准科学记数法的 R 函数?