使用ReporteRs从R导出表格,其中的单元格按照值

时间:2018-05-25 19:42:36

标签: reporters

使用R中的ReporteRs包我想将带有彩色单元格的数据框导出到word文档中的表格。

按照本网站提供的代码和说明进行操作:http://www.sthda.com/english/wiki/add-a-table-into-a-word-document-using-r-software-and-reporters-package

我试图为我准备的表格中的单元格添加颜色。但我无法在我导出的表格中的单元格中获得正确的颜色。

下面的代码有一个测试数据框,并且还安装了该软件包。 代码生成一个带有表格的word.doc文件,但单元格中的颜色是错误的。 word文档中表格中单元格中的颜色与单元格中的值不匹配。我怀疑我已经设定了“休息时间”。不正确,但我不确定如何正确设置它们以获得我想要的表格。

我的输入数据框的值为1到5,我希望单元格根据其值进行着色。 即,值为1的单元格应为紫色,值为2的单元格应为蓝色,值为3的单元格应为深绿色,值为4的单元格应为绿色,值为5的单元格应为黄色。

#get the packages required
install.packages("ReporteRs")
library(ReporteRs)

# set working directory
setwd ("/your_own_working_dir/")

#make some test data
c2 <- c(1,2,3,5)
c3 <- c(2,2,3,2)
c4 <- c(4,3,2,1)
#bind the data in to a dataframe
cc <- t(cbind(c2,c3,c4))
dd <- as.data.frame(cc)

#turn the dataframe into a matrix
ee <- matrix(as.numeric(unlist(dd)),nrow=nrow(dd))

#define colors
#col =c("#FB0000", "#FB7F00", "#FBF000", "#6EFF4C")
col =c("purple", "blue", "darkgreen", "green", "yellow")

mycut = cut(ee,
            #breaks = c(-1,-0.75,-0.5,-0.25,0,0.25,0.5,0.75,1),
            breaks = c(1, 2, 3, 4 ,5),
            include.lowest = TRUE, label = FALSE )
color_palettes = col[mycut]
#see the colors in the color palette
unique(color_palettes)

corrFT = FlexTable( ee, add.rownames = TRUE )
corrFT = setFlexTableBackgroundColors(corrFT,
                                      j = seq_len(ncol(ee)) + 1,
                                      colors = color_palettes )
#show_col(color_palettes) #install from "scales" package
#make an empty doc
doc <- docx()

corrFT = setFlexTableBorders( corrFT
                              , inner.vertical = borderProperties( style = "dashed", color = "white" )
                              , inner.horizontal = borderProperties( style = "dashed", color = "white"  )
                              , outer.vertical = borderProperties( width = 2, color = "white"  )
                              , outer.horizontal = borderProperties( width = 2, color = "white"  )
)
doc <- addFlexTable( doc, corrFT)
writeDoc(doc, file = "r-reporters-word-document-correlation.docx")

0 个答案:

没有答案