目前,我正在与RMarkdown和Pandoc合作。我在R中的data.frames看起来像这样:
3.538e+01 3.542e+01 3.540e+01
9.583e+00 9.406e+00 9.494e+00
2.601e+05 2.712e+05 5.313e+05
运行pandoc后,结果如下:
35.380 35.420 35.400
9.583 9.406 9.494
260116.000 271217.000 531333.000
它应该是什么样的:
35,380 35,420 35,400
9,583 9,406 9,494
260.116 271.217 531.333
所以我想要逗号代替点而不想在260116(千位数字)之后没有逗号或点。将千分开的点数会很好。有没有办法直接更改R中的外观或我是否必须在knitr / markdown中设置选项?
由于
答案 0 :(得分:5)
以下是可以使用format()
进行的部分转化的示例:
x <- c(35.38, 35.42, 35.4, 9.583, 9.406, 9.494, 260100, 271200, 531300)
format(x, decimal.mark=",", big.mark=".", scientific=FALSE)
# [1] " 35,380" " 35,420" " 35,400" " 9,583" " 9,406"
# [6] " 9,494" "260.100,000" "271.200,000" "531.300,000"
还有其他几个选项,例如trim
,justify
等,可能会让您的输出为pandoc做好准备。
答案 1 :(得分:1)
由于这个问题非常鼓舞人心,我recently在我的pander包中引入了big.mark
功能,可以使用预定义的选项从R对象返回markdown格式的表 - 构建在format
上顺便说说。小演示:
加载程序包(installed from GH,直到此功能进入CRAN):
> library(pander)
制作演示data.frame
:
> x <- matrix(c(35.38, 35.42, 35.4, 9.583, 9.406, 9.494, 260100, 271200, 531300), 3, byrow = TRUE)
设置默认选项:(可能需要切换US上下文的值)
> panderOptions('decimal.mark', ',')
> panderOptions('big.mark', '.')
让pander
完成其余工作:
> pander(x)
------- ------- -------
35,38 35,42 35,4
9,583 9,406 9,494
260.100 271.200 531.300
------- ------- -------
您可以在那里找到并使用更多选项(例如表格的降价语法)。