【问题标题】:Is there a way of making beautiful tables for Word in R?有没有办法在 R 中为 Word 制作漂亮的表格?
【发布时间】:2019-09-26 09:09:00
【问题描述】:

我问我关于 SO 的问题,这是我最后的希望 :-) 我必须制作一份关于 Word 的报告。 我在 R Markdown 上工作,我必须制作许多表格。 我希望我的桌子很漂亮!但我尝试的所有方法(panderKableExtraflextable)都不起作用。

我从coxphmodels 中获取结果,我汇总它们,然后构建我的data.frame,如下所示:

  1                                        Model 1                         Model 2
2                                         n= 375                          n= 374
3                                          e= 65                           e= 64
4                                       PH= 0.46                        PH= 0.97
5            Weight                          ---     1.0  [ 1.0 ; 1.1 ] p = 0.03
6              Size                          --- 1.0  [ 1.0 ; 1.0 ] p = < 10^-3^
7              GR I                          ---                               1
8             GR II                          --- 1.2e+06  [ 0.0 ; Inf ] p = 1.00
9            GR III                          --- 1.4e+06  [ 0.0 ; Inf ] p = 1.00
10            Roads                            1 1.1  [ 1.0 ; 1.1 ] p = < 10^-5^
11            Score  1.0  [ 0.9 ; 1.0 ] p = 0.04                             ---
12 Likelihood ratio Chi-two= 4.48 p-value= 0.034  Chi-two= 2.73 1 p-value= 0.098
                                V4
1                          Model 3
2                           n= 374
3                            e= 64
4                         PH= 0.96
5      1.0  [ 1.0 ; 1.1 ] p = 0.05
6  1.0  [ 1.0 ; 1.0 ] p = < 10^-2^
7                                1
8  1.3e+06  [ 0.0 ; Inf ] p = 1.00
9  1.7e+06  [ 0.0 ; Inf ] p = 1.00
10 1.1  [ 1.1 ; 1.1 ] p = < 10^-6^
11     1.0  [ 0.9 ; 1.0 ] p = 0.10

在 Latex 上创建漂亮的表格很容易,我使用xtable来获得这个 .

在 R Markdown 上,我使用 print(kable(table)),但我无法使用 KableExtra 的任何功能来改进演示文稿(编织到单词时它不起作用)。 另外,我的表格是循环制作的,这让情况变得更加困难。

你有什么线索可以从 R Markdown 生成这样的 Word 表格吗?

特别是:

  • 我们可以在一个单元格中排队吗?
  • 我们可以创建多行单元格吗?
  • 我们可以创建多列单元格吗?
  • KableExtra 不起作用的情况下如何添加条带?

感谢您对上述问题的任何回答:-)

【问题讨论】:

  • 我试过这个方法没有成功!我的表格是循环生成的,所以我必须使用 print 函数来更改结果。
  • 我发现在许多情况下,编织到 Word 的效果不如编织到 html,然后将所有内容复制粘贴到 Word,因为 Word(有时)相当不错地翻译 HTML 文档。显然,您的问题可能不是一个令人满意的解决方案,并且仍然需要在 Word 中进行大量编辑。
  • 你可以试试huxtable(我的包)中的huxreg()函数。它在后台使用flextable 将内容打印到Word。您确实可以创建多行和多列单元格。
  • @dash2 感谢您的建议! flextabledoes 工作:-) 我昨天一整天都在使用它。它似乎适应了。一开始我想用kableExtra,但flextable似乎更适合做这种任务

标签: r dataframe ms-word markdown r-markdown


【解决方案1】:

kableExtra 专注于 html 内容的表格。但是,我有时也使用它通过以前的 html 输出为 Word 文档创建表格。首先,我在kableExtra 中设置了表格的规范(请参阅文档;重要:跳过kableExtra 规范中的html 属性,这使得后续将表格复制到Word 变得困难)。然后我只使用results='show' 将相应的RMarkdown 文档编织成html(在这些情况下我不使用print)。从生成的 html 文档中,您应该能够将表格复制并粘贴到 Word 中。你试过这个吗?我假设print 命令不允许通常的kableExtra 表格样式。您还可以使用lapply 遍历您的表吗?

【讨论】:

  • 感谢您的回答!在循环中使用kableExtra 时,如果没有删除所有样式的print,Word 或Html 中不会显示任何结果。即使是results='show'。我会用lapply 测试它,但我的希望很低
  • 我尝试了lapply。这并不简单,因为我的函数中有两个参数。而mapply 不会产生想要的输出。我想我得修修补补了。
  • 您想编辑/改进您的答案,还是希望我根据您的答案推荐一个?
  • 也许我们不需要使用lapply 重新发明轮子。我刚刚看到已经发布了一个可能的解决方案,它允许使用 print 和 kable_styling: [stackoverflow.com/questions/51696689/… 这个例子是用于 pdf 输出(甚至可以在编织到 Word 时工作)但也应该适用于 html 时使用"html" 而不是"latex"。但也许有人也在阅读您的帖子,也已经使用lapply 完成了这项工作。
  • 这正是我最后使用的!非常感谢所有建议:-)
【解决方案2】:

您是否已经尝试过stargazer 包?您可以使用type 参数指定表格的输出格式。编织单词时唯一对我有用的是text 格式。请参阅下面在循环中运行的示例。它应该可以运行,但可能需要一些调整。

```{r word_table, comment = ''}
library(stargazer)

lapply(1:3, function(x){
  print(paste("table", x))
  stargazer(attitude, type = 'text')      
})
```

我改编了这段代码:Stargazer output is code, not a table

【讨论】:

  • 感谢您的建议。正如建议页面中的答案所指定:您的程序给出了“一个原始但可读的表”。我的报告中不能有原始表格。还是谢谢你!!
  • 祝你好运!
猜你喜欢
  • 1970-01-01
  • 2011-09-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-01
  • 2021-04-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多