body_add_flextable返回错误-'docx_str'没有适用的方法

时间:2018-06-19 22:09:42

标签: r flextable officer

我一直在尝试使用Officer将通过rtable :: FlexPivot创建的flextable添加到Word文档中。

library(magrittr)
library(rtable)
library(officer)
library(flextable)

data = mtcars
data = group_by(data, vs, am, gear, carb)
data = summarise(data, avg = mean( mpg ), min = min( mpg ))

data$avg_col = ifelse( data$avg < 17, "red", "black" )
data$min_col = ifelse( data$min < 20, "gray", "purple" )

data$avg = sprintf( "%.3f", data$avg)
data$min = sprintf( "%.2f", data$min)


ft = FlexPivot( dataset = data, space = FALSE, columns.transpose = TRUE, 
            id = c("gear", "carb"), transpose = c("vs", "am"), 
            columns = c("avg", "min"), 
            color = c("avg"="avg_col", "min" = "min_col") )

my_doc <- read_docx() %>%
      body_add_par(value='Some text etc etc') %>%
      body_add_flextable(value=ft)

这将返回一条错误消息,提示

  

UseMethod(“ docx_str”)中的错误:无适用的方法   “ docx_str”应用于“ FlexTable”类的对象

任何想法可能是什么原因造成的?我正在使用pandoc 2.1.3。 pandoc_version()返回'2.1.3'。

2 个答案:

答案 0 :(得分:1)

rtable设计用于ReporteRs,而不是officer。请注意,由于与Java> = 9不兼容,报告包ReporteRs将在2018年7月16日从CRAN中删除,软件包officer替换ReporteRs而软件包flextable替换{{1 }}对象。

答案 1 :(得分:0)

newFT <- flextable(ft) #add this line 

#then this
my_doc <- read_docx() %>%
     body_add_par(value='Some text etc etc') %>%
     body_add_flextable(value=newFT)