R 中的颜色和样式格式 Data.Frames
Color and Style Format Data.Frames in R
我正在尝试格式化我在 R 中创建的 data.frame,但似乎找不到解决方案。通过格式,我的意思是我想 bold/italicize data.frame 的 headers(即名称)以及 color/highlight data.frame 中的某些行。
我尝试研究 google/Whosebug,但找不到适用或直接有用的东西。我也尝试过使用 CellStyle,但这不允许我 bold/italicize data.frame 的 headers。
欢迎任何帮助!
您可以使用 XLConnect
包来格式化 Excel 中的数据框。
这是我一直在使用的代码,这将是您学习它和探索适合您的变化的一个很好的起点。用法:save.xls(你的数据框,你要给文件起的名字,.xlsx后缀,....
save.xls <- function(df, filename, sheetname="Sheet", create=TRUE, rownames=NULL, startRow=1, zebra=F) {
require(XLConnect)
require(stringr)
if (is.matrix(df)) df <- as.data.frame(df)
if (!str_detect(filename, "\.xlsx$")) filename <- str_c(filename, ".xlsx")
wb <- loadWorkbook(filename, create=create)
if (existsSheet(wb, sheetname))
warning(sprintf("Sheet %s already existed and was overwritten", sheetname))
createSheet(wb, name=sheetname)
if (!is.null(rownames)) df <- transform(df, rownames = row.names(df))
writeWorksheet(wb, df, startRow=startRow, sheet=sheetname, rownames=rownames)
if (zebra) {
color <- createCellStyle(wb)
setFillForegroundColor(color, color = XLC$"COLOR.LIGHT_CORNFLOWER_BLUE")
setFillPattern(color, fill = XLC$FILL.SOLID_FOREGROUND)
for (i in 1:ncol(df)) {
setCellStyle(wb, sheet = sheetname, row = seq(startRow+1, nrow(df)+2, 2), col = i,
cellstyle = color)
}
#prcntg <- createCellStyle(wb) see my script of XLConnect.R for how it worked
#dollar <- createCellStyle(wb)
#setDataFormat(prcntg, format = "0.0")
#setDataFormat(dollar, format = "$ 0.00")
border <- createCellStyle(wb)
setBorder(border, side = c("bottom","top"), type = XLC$"BORDER.THICK", color = XLC$"COLOR.RED")
setCellStyle(wb, sheet = "Sheet", row = startRow, col = 1:ncol(df), cellstyle = border)
setColumnWidth(wb, sheet = "Sheet", column = 1:ncol(df), width = -1) # this autosizes each column
}
saveWorkbook(wb)
}
我正在尝试格式化我在 R 中创建的 data.frame,但似乎找不到解决方案。通过格式,我的意思是我想 bold/italicize data.frame 的 headers(即名称)以及 color/highlight data.frame 中的某些行。
我尝试研究 google/Whosebug,但找不到适用或直接有用的东西。我也尝试过使用 CellStyle,但这不允许我 bold/italicize data.frame 的 headers。
欢迎任何帮助!
您可以使用 XLConnect
包来格式化 Excel 中的数据框。
这是我一直在使用的代码,这将是您学习它和探索适合您的变化的一个很好的起点。用法:save.xls(你的数据框,你要给文件起的名字,.xlsx后缀,....
save.xls <- function(df, filename, sheetname="Sheet", create=TRUE, rownames=NULL, startRow=1, zebra=F) {
require(XLConnect)
require(stringr)
if (is.matrix(df)) df <- as.data.frame(df)
if (!str_detect(filename, "\.xlsx$")) filename <- str_c(filename, ".xlsx")
wb <- loadWorkbook(filename, create=create)
if (existsSheet(wb, sheetname))
warning(sprintf("Sheet %s already existed and was overwritten", sheetname))
createSheet(wb, name=sheetname)
if (!is.null(rownames)) df <- transform(df, rownames = row.names(df))
writeWorksheet(wb, df, startRow=startRow, sheet=sheetname, rownames=rownames)
if (zebra) {
color <- createCellStyle(wb)
setFillForegroundColor(color, color = XLC$"COLOR.LIGHT_CORNFLOWER_BLUE")
setFillPattern(color, fill = XLC$FILL.SOLID_FOREGROUND)
for (i in 1:ncol(df)) {
setCellStyle(wb, sheet = sheetname, row = seq(startRow+1, nrow(df)+2, 2), col = i,
cellstyle = color)
}
#prcntg <- createCellStyle(wb) see my script of XLConnect.R for how it worked
#dollar <- createCellStyle(wb)
#setDataFormat(prcntg, format = "0.0")
#setDataFormat(dollar, format = "$ 0.00")
border <- createCellStyle(wb)
setBorder(border, side = c("bottom","top"), type = XLC$"BORDER.THICK", color = XLC$"COLOR.RED")
setCellStyle(wb, sheet = "Sheet", row = startRow, col = 1:ncol(df), cellstyle = border)
setColumnWidth(wb, sheet = "Sheet", column = 1:ncol(df), width = -1) # this autosizes each column
}
saveWorkbook(wb)
}