R语言科学计数法介绍:digits和scipen设置方式

 更新时间:2021年04月19日 09:08:52   作者:datanewlook  
这篇文章主要介绍了R语言科学计数法介绍:digits和scipen设置方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

控制R语言科学计算法显示有两个option: digitis和scipen。介绍的资料很少,而且有些是错误的。经过翻看R语言的帮助和做例子仔细琢磨,总结如下:

默认的设置是:

getOption("digits")
[1] 7
getOption("scipen")
[1] 0

digits 有效数字字符的个数,默认是7, 范围是[1,22]

scipen 科学计数显示的penalty,可以为正为负,默认是0

R输出数字时,使用普通数字表示的长度 <= 科学计数法表示的字符长度 + scipen长度时,保留普通数字表示的长度,否者采用科学计数法表示。

举个栗子:

> options(digits = 2) # 有效数字为2位
> options(scipen = 1)
> 1         # 1e+00 长度为5, 保留1显示,长度为1
[1] 1
> 12345678   # 1.2e+07, 长度为7, 7 + scipen = 8, 普通数字表示长度为8, 没有超过8, 任然保留不同数字的表示。
[1] 12345678
> 123456789   # 1.2e+08, 长度为7, 7 + scipen =8, 普通数字表示长度为9,因此切换成科学计数法表示
[1] 1.2e+08

一个简单的方法(不那么准确,比如digits=1时,没有小数点;数非常大时,指数可能是3位数)估算最长的数字串可以这样:

digits + 1 (小数点)+ 4 (e+XX科学计数法表示) + scipen

比如刚才最长不用科学计数法表示的数字长度是2+1+4+1 = 8

我们看看修改scipen = -2, 验证是不是最长数字长度是2+1+4 - 2 = 5

> options(scipen = -2)
> 1234
[1] 1234
> 12345
[1] 12345
> 123456
[1] 1.2e+05

果然!

补充:R语言设置数值输出(保留至小数点后位数和保留有效数字)

在R语言中,数字的输出默认为7位:

> a = 0.1234567890   #10位
> a
[1] 0.1234568

注:输出结果四舍五入。

1 options(digits)函数

通过options(digits)函数设置输出长度,当digits = 3时:

> options(digits = 3) 
> a = 0.1234567890 #10位
> a
[1] 0.123

当digits = 10时:

> options(digits = 10)
> a = 0.1234567890   #10位
> a
[1] 0.123456789

digits最大取22,超过22会报错:

> options(digits = 3)
> options(digits = 22)
> options(digits = 23)
Error in options(digits = 23) : 
  invalid 'digits' parameter, allowed 0...22

输出的结果只保留了9位,末尾的0被省略。

2 round(x, n)函数

round(x, n)函数中,x为数字,n为小数点后保留的位数,设置n = 4时:

> a = 0.1234567890   #10位
> round(a, 4)
[1] 0.1235
> a = 1.234567890   #小数点后9位
> round(a, 4)
[1] 1.2346

注:输出结果四舍五入。

当设置n = 10时:

> a = 0.1234567890   #10位
> round(a, 10)
[1] 0.123456789

输出的结果只保留了9位,末尾的0被省略。

当小数点后的0的位数超过n时,输出的结果为0:

> a = 0.0001234567890   #13位
> round(a, 3)
[1] 0
> a = 0.0001234567890   #13位
> round(a, 4)
[1] 1e-04

3 signif(y, n)函数

signif(x, n)函数中,x为数字,n为有效数字的个数 ,当n = 4时:

> a = 1.234567890   #小数点后9位
> signif(a, 4)
[1] 1.235
> a = 0.000001234567890   #小数点后15位
> signif(a, 4)
[1] 1.235e-06

当n = 10时:

> a = 1.234567890   #小数点后9位
> signif(a, 10)
[1] 1.23456789

此时数字末尾的0依旧被省略。

4 sprintf(fmt, …)函数

> a = 0.1234567890   #小数点后10位
> sprintf("%0.4f", a)
[1] "0.1235"
> a = 0.1234567890   #小数点后10位
> sprintf("%0.10f", a)
[1] "0.1234567890"

通过sprintf(fmt, ...)函数可以保留末尾的0。

当输入为整数时,位数不够会在输入值前面补0:

> a = 12456789
> sprintf("%03d", a)
[1] "12456789"
> a = 12
> sprintf("%03d", a)
[1] "012"

欢迎大家批评指正。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。如有错误或未考虑完全的地方,望不吝赐教。

相关文章

  • R语言列筛选的方法select实例详解

    R语言列筛选的方法select实例详解

    对于大数据,linux和python是很好的处理工具,但是对于这两个语言不熟悉的盆友来说,R语言是非常好的替代工具,下面这篇文章主要给大家介绍了关于R语言列筛选的法select的相关资料,需要的朋友可以参考下
    2022-07-07
  • R语言-计算频数和频率的操作

    R语言-计算频数和频率的操作

    这篇文章主要介绍了R语言-计算频数和频率的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-04-04
  • 如何用R语言绘制饼图和条形图

    如何用R语言绘制饼图和条形图

    这篇文章主要介绍了如何用R语言绘制饼图和条形图,帮助大家更好的理解和学习使用R语言,感兴趣的朋友可以了解下
    2021-03-03
  • R语言变量重编码、重命名的操作

    R语言变量重编码、重命名的操作

    这篇文章主要介绍了R语言变量重编码、重命名的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-04-04
  • R语言数据建模流程分析

    R语言数据建模流程分析

    这篇文章主要介绍了R语言数据建模流程分析,本篇中包含了数据导入,清洗,可视化,特征工程,建模的代码,大家可以选择需要的去参考
    2022-01-01
  • R语言绘图技巧导出高清图方法

    R语言绘图技巧导出高清图方法

    这篇文章主要为大家介绍了R语言绘图技巧如何导出高清图,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-02-02
  • R语言-t分布正态分布分位数图的实例

    R语言-t分布正态分布分位数图的实例

    这篇文章主要介绍了R语言-t分布正态分布分位数图的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-04-04
  • R语言生成随机数实例讲解

    R语言生成随机数实例讲解

    这篇文章主要介绍了R语言生成随机数实例讲解,文中图文讲解的很清晰,有需要的同学可以参考下
    2021-03-03
  • R语言行筛选的方法之filter函数详解

    R语言行筛选的方法之filter函数详解

    最近工作中要处理一大批数据,所以这篇文章主要给大家介绍了关于R语言行筛选的方法之filter函数的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-07-07
  • R语言关于随机森林算法的知识点详解

    R语言关于随机森林算法的知识点详解

    在本篇文章里小编给大家整理的是一篇关于R语言关于随机森林算法的知识点详解内容,有兴趣的朋友们可以跟着学习下。
    2021-05-05

最新评论