首页 > 解决方案 > 相同的 Excel 数据,相同的 .RMD 文件,不同的降价结果

问题描述

问题:相同的代码,相同的数据,但不同的输出。
我最近聘请了一个人并将他设置在 R 上。当我们尝试使用具有相同数据的相同 .rmd 文件编写 .pdf 文件时,我们会得到不同的结果。简而言之,代码读取一个 Excel 文件并从其中一个单元格中写出一个值。在我的电脑上,输出是“100,000”。在他的电脑上,它显示为“1e+05”。问题是如何使两台计算机的输出为“100,000”?当您查看代码时,您会看到我正在使用代码打印矢量

av$PreTaxValue <- prettyNum(round(av$PreTaxValue, 0), big.mark = ",")

对我来说很奇怪,向量中的一个数字是科学计数法,而其他值有一个逗号。

我将 markdown (.rmd) 文件、Excel 数据和两个(每台计算机一个).PDF 输出文件放入Github repo中。编织时,.rmd 会创建一个 .pdf。Control.xlsx 工作簿包含数据。debug1.pdf 具有我认为应该的输出方式。Taxable 行 PreTaxvValue 列有“100,000”。在 debug.pdf 中,此值显示为“1e05”

任何帮助表示赞赏。附加细节:我们都安装了 tinytex。以下是有关我们正在使用的版本的信息。

R.Version() from my PC produces:    
$platform   
[1] "x86_64-w64-mingw32"    
$arch   
[1] "x86_64"    
$os    
[1] "mingw32"    
$system    
[1] "x86_64, mingw32"    
$status    
[1] ""    
$major    
[1] "3"    
$minor    
[1] "5.1"    
$year    
[1] "2018"    
$month    
[1] "07"    
$day    
[1] "02"    
$svn rev    
[1] "74947"    
$language    
[1] "R"    
$version.string    
[1] "R version 3.5.1 (2018-07-02)"    
$nickname    
[1] "Feather Spray"

From my colleague's PC: R.Version() produces:    
$platform    
[1] "x86_64-w64-mingw32"    
$arch    
[1] "x86_64"    
$os    
[1] "mingw32"    
$system    
[1] "x86_64, mingw32"    
$status    
[1] ""    
$major    
[1] "3"    
$minor    
[1] "5.1"    
$year    
[1] "2018"    
$month    
[1] "07"    
$day    
[1] "02"    
$svn rev    
[1] "74947"    
$language    
[1] "R"    
$version.string    
[1] "R version 3.5.1 (2018-07-02)"    
$nickname    
[1] "Feather Spray"   

标签: rrstudior-markdownknitr

解决方案


正如Alaleh A在评论中提到的那样,您基本上可以通过更改全局scipen选项来禁用科学记数法:

options(scipen=100)

正如这个 Stack Overflow 问题中所讨论的那样。但是,如果您不希望将其作为全局设置,则可以更改

prettyNum(round(av$PreTaxValue, 0), big.mark = ",")

prettyNum(format(round(av$PreTaxValue, 0), scientific = FALSE), big.mark = ",")

(同样对于av$AfterTaxValue)。考虑以下:

x = 100000.00
prettyNum(round(x, 0), big.mark = ",")
#> [1] "1e+05"
prettyNum(format(round(x, 0), scientific = FALSE), big.mark = ",")
#> [1] "100,000"

推荐阅读