0

目前,我正在使用 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 中设置选项?

谢谢

4

2 回答 2

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"

还有其他几个选项,例如trimjustify等,可能对让您的输出为 pandoc 做好准备感兴趣。

于 2013-08-26T10:37:25.833 回答
1

由于这个问题真的很鼓舞人心,我最近big.mark在我的 pander 包中引入了这个功能,它可以从 R 对象返回带有预定义选项的 markdown 格式的表格——format顺便说一下。小演示:

  1. 加载包(从 GH 安装,直到此功能到达 CRAN):

    > library(pander)
    
  2. 创建一个演示data.frame

    > x <- matrix(c(35.38, 35.42, 35.4, 9.583, 9.406, 9.494, 260100, 271200, 531300), 3, byrow = TRUE)
    
  3. 设置您的默认选项:(可能需要切换美国上下文的值)

    > panderOptions('decimal.mark', ',')
    > panderOptions('big.mark', '.')
    
  4. 让我们pander做剩下的:

    > pander(x)
    
    ------- ------- -------
     35,38   35,42   35,4  
    
     9,583   9,406   9,494 
    
    260.100 271.200 531.300
    ------- ------- -------
    

您可以在那里找到并使用更多选项(例如表格的降价语法)。

于 2013-08-26T17:18:40.847 回答