当前位置:  开发笔记 > 编程语言 > 正文

R数据帧轻松导出和表格格式化为Word?

如何解决《R数据帧轻松导出和表格格式化为Word?》经验,为你挑选了2个好方法。

是否有一种简单的方法可以自动将R数据帧转换为APA格式的漂亮Word表以便发布稿件?我目前正在通过将表保存在csv中,在excel中打开它,将excel表复制到Word,并在那里格式化它,但我希望有一种方法可以自动化R中的格式,这样做当我将它转换为Word时,它已经是APA格式,因为Word在自动化方面很糟糕.

基本上,我想继续在Word中编写手稿本身,同时在R中进行我的分析.然后通过脚本将R中的所有结果收集到一个表(具有可手动修改的格式)并将其转换为我可以简单地复制的任何格式-paste to Word(以便格式化实际成立).当我需要修改表时,我会在R中进行更改,然后再次运行脚本而无需在Word中进行任何更改.

我不想学习LaTeX,因为我所在领域的每个人都使用带有轨道变化等功能的Word,并且我使用Zotero插件进行引用,因此将编写与分析分开是更简单的.另外,我是一名心理学家,而不是编码员,所以为此学习很多新技术对我来说可能不值得.通常情况下,新技术会带来新的技术问题,我的目标是让我的工作流程更快,但不会以不可预测性为代价(这可能会使我在无法负担的时刻正好放慢速度).

我找到了一个R + knitr + rmarkdown + pander + pandoc解决方案 "尽可能少的开销",但它似乎仍然相当沉重,因为除了R我不知道任何这些技术.我不急开始学习所有这些,因为它似乎是为了完成写作而在R中最终完成,而我想将我的写作和代码分开 - 我在写作中从不需要代码,只需要结果表.另外,基于这些示例,它似乎直接从R代码中获取值(例如,从summary()创建描述性表),而我需要能够在转换之前手动修改我的表,例如,编写标题和注释(如对一个单元格的特定注释并在底部解释).我也找到了R2wd,但它似乎是与上述解决方案相同的"R中的整个工作流程"问题的较旧尝试.SWord似乎不再起作用了.

有什么建议?



1> David Gohel..:

(只是为了让你知道,我是我推荐你的套餐的作者...)

您可以使用包ReporteRs将表输出到Word.在这里看一个教程(不是我的):http: //www.sthda.com/english/wiki/create-and-format-word-documents-using-r-software-and-reporters-package

对象FlexTable允许您使用一些标准R代码轻松地格式化和排列表格.例如,要将第二列设置为粗体,代码如下所示:

myFlexTable[, 2] = textBold()

这里有(旧的)示例:http: //davidgohel.github.io/ReporteRs/flextable_examples.html

可以使用addFlexTable函数将这些对象添加到Word报告中.可以使用函数生成单词报告writeDoc.

如果您在RStudio中工作,则可以打印该对象,它将在html查看器中呈现,以便您在对其内容感到满意时将其导出到Word中.

你甚至可以添加真正的Word脚注(见下面的链接) http://davidgohel.github.io/ReporteRs/pot_objects.html#pot_footnotes

如果你需要更多的表格输出,我建议你也使用rtable处理xtable对象的包(以及我必须开发的其他东西来满足我的同事或客户) - 这里可以看到一个快速演示:

http://davidgohel.github.io/tabular/

希望能帮助到你...



2> Dag Hjermann..:

我有同样的需求,我最终使用的是htmlTable包,这非常"具有成本效益".这会创建一个HTML表格(在RStudio中,它是在右下角的"查看器"窗口中创建的,我只是使用鼠标复制粘贴到Word上进行标记.(从表格底部开始标记并向上拖动鼠标,即你确定要包含HTML代码的开头.)Word很好地处理这些表.语法非常简单,仅涉及函数htmlTable(),但仍然能够制作更复杂的表,例如分组行和主表.辅助列标题(即跨越多列的列标题).查看小插图中的示例.

需要注意的一点是:htmlTable将无法使用因子变量,即它们将以整数形式出现(根据因子级别).因此,使用stringsAsFactors = FALSE或使用转换它们来读取数据as.character().

包括尾随零可以使用该txtRound函数完成.例:

mini_table <- data.frame(Name="A", x=runif(20), stringsAsFactors = FALSE)
txt <- txtRound(mini_table, 2)

将格式化soch指定为粗体或斜体并不是完全简单的,但可以通过将表内容包装在HTML代码中来完成.例如,如果你想把整个列加粗,可以这样做(请注意在里面使用单引号和双引号paste0):

library(plyr)
mini_table <- data.frame(Name="A", x=runif(20), stringsAsFactors = FALSE)
txt <- txtRound(mini_table, 2)
txt$x <- aaply(txt$x, 1, function(x)
               paste0("", x, "

当然,这在Word中会更容易.但是,根据某些条件向数字添加格式更为有趣.例如,如果我们想x通过应用粗体字来强调小于0.2的所有值,我们可以修改上面的代码,如下所示:

library(plyr)
mini_table <- data.frame(Name="A", x=runif(20), stringsAsFactors = FALSE)
txt <- txtRound(mini_table, 2)
txt$x <- aaply(txt$x, 1, function(x) 
               if (as.numeric(x)<0.2) { 
                  paste0("", x, "")
               } else {
                  paste0("", x, "")
               })
htmlTable(txt)

如果你想要更加强调,你可以span 在上面的代码中使用红色背景颜色替换粗体字体.所有这些更改都会转移到Word,至少在我的计算机上(Windows 7).

推荐阅读
Chloemw
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有