首页 > 解决方案 > 如何避免在 R 中以科学计数法显示值?

问题描述

我在 R 中有这个代码来制作频率表:

TablaFrecs = function(x,k,A,p){
  options(scipen=999)
  L = min(x)-p/2+A*(0:k)
  x_cut = cut(x, breaks = L, right=FALSE)
  intervals = levels(x_cut)
  mc = (L[1]+L[2])/2+A*(0:(k-1))
  Fr.abs = as.vector(table(x_cut)) 
  Fr.rel = round(Fr.abs/length(x),4) 
  Fr.cum.abs = cumsum(Fr.abs) 
  Fr.cum.rel = cumsum(Fr.rel)
  tabla = data.frame(intervals, mc, Fr.abs, Fr.cum.abs, Fr.rel, Fr.cum.rel)
  tabla
}

但它以科学计数法显示间隔 在此处输入图像描述

ej 9 是这样的: 在此处输入图像描述 我正在使用 OFF.COURSE 变量

我已经尝试过 options(scipen=999) 和 format(scientific = F) 但并没有解决它。

PD:我还想为我的 TablaFrecs 函数创建一个 hist(),我该怎么做?

标签: r

解决方案


您可以使用mapplyandformat创建标签:

TablaFrecs = function(x,k,A,p){
  options(scipen=999)
  L = min(x)-p/2+A*(0:k)
  labels = mapply(function(x,y){paste0("[",format(x),",",format(y),")")},L[-length(L)],L[-1])
  x_cut = cut(x,
              breaks = L ,
              labels = labels,
                right=FALSE)
  intervals = levels(x_cut)
  mc = (L[1]+L[2])/2+A*(0:(k-1))
  Fr.abs = as.vector(table(x_cut)) 
  Fr.rel = round(Fr.abs/length(x),4) 
  Fr.cum.abs = cumsum(Fr.abs) 
  Fr.cum.rel = cumsum(Fr.rel)
  tabla = data.frame(intervals, mc, Fr.abs, Fr.cum.abs, Fr.rel, Fr.cum.rel)
  tabla
}

TablaFrecs(1e6, k= 27, A = 3646296, p= 0.1)

             intervals       mc Fr.abs Fr.cum.abs Fr.rel Fr.cum.rel
1   [999999.9,4646296)  2823148      1          1      1          1
2    [4646296,8292592)  6469444      0          1      0          1
3   [8292592,11938888) 10115740      0          1      0          1
...

推荐阅读