使用整洁时防止数字格式化

时间:2017-01-09 09:05:40

标签: r knitr

我使用整洁来格式化我的rMarkdown文件的块。如何防止这些数字,特别是长数字,是否整齐?例如:

set.seed(3585)
n=10000 
loginkomens_prog1 = c(rep(10,0.3*n), rnorm(0.7*n, mean=11, sd=1))
inkomens_prog1 = exp(loginkomens_prog1) 
inkomens_prog1[inkomens_prog1>100000]=100000
par(mfrow=c(1,2)) 
hist(inkomens_prog1,main="Programma1",xlim=c(0,200000)) 

整理它,就像这样:

set.seed(3585)  
n = 10000 
loginkomens_prog1 = c(rep(10, 0.3 * n), rnorm(0.7 * n, mean = 11, 
    sd = 1))  
inkomens_prog1 = exp(loginkomens_prog1)  
inkomens_prog1[inkomens_prog1 > 1e+05] = 1e+05  
par(mfrow = c(1, 2))  
hist(inkomens_prog1, main = "Programma1", xlim = c(0, 2e+05))  

我希望它保持100000而不是1e + 05。可能吗?或者我为该块设置tidy=FALSE并且我手动格式化它是否更好?

1 个答案:

答案 0 :(得分:1)

来自tidy_source包的

formatR用于整理内容,最终的作用是cat()输出。

因此,为防止您的号码转换为科学记数法,您必须适当设置scipen选项(请参阅例如How to disable scientific notation in R?)。

示例:

temp <- tempfile(fileext = ".R")
cat("inkomens_prog1[inkomens_prog1>100000]=100000", file = temp)

formatR::tidy_source(temp)
# inkomens_prog1[inkomens_prog1 > 1e+05] = 1e+05

options(scipen = 99)
formatR::tidy_source(temp)
# inkomens_prog1[inkomens_prog1 > 100000] = 100000