r - openxlsx 中的自定义列名
问题描述
我将使用 openxlsx 生成报告。
我有一个数据框,其列名对最终用户不友好。所以我想生成一个带有自定义列的excel文件。我已经想出了如何使用 忽略列名colNames = FALSE
,但是添加我需要的名称的最佳方法是什么?
report <- createWorkbook('report.xlsx')
addWorksheet(report, 'test')
# how to add column names
writeData(report, sheet = 1, df, colNames = FALSE)
saveWorkbook(report, 'report.xlsx', overwrite = TRUE)
解决方案
重命名列名可能比忽略它们更好。例如:
library(tidyverse)
library(openxlsx)
wb = createWorkbook()
sht = addWorksheet(wb, "data")
mtcars %>%
rename(Cylinders = cyl,
`Miles per Gallon` = mpg) %>%
writeData(wb, sht, .)
saveWorkbook(wb, "myworkbook.xlsx")
如果您要生成这样的常规报告,您可以创建一个包含新名称/旧名称对的向量以进行重命名。例如:
# Renaming vector
rename.vec = c("Cylinders"="cyl",
"Miles per Gallon"="mpg",
"Displacement"="disp")
# Example of renaming using the vector we just created
mtcars %>%
rename(!!!rename.vec) %>%
head
Miles per Gallon Cylinders Displacement hp drat wt qsec vs am Mazda RX4 21.0 6 160 110 3.90 2.620 16.46 0 1 Mazda RX4 Wag 21.0 6 160 110 3.90 2.875 17.02 0 1 Datsun 710 22.8 4 108 93 3.85 2.320 18.61 1 1 Hornet 4 Drive 21.4 6 258 110 3.08 3.215 19.44 1 0 Hornet Sportabout 18.7 8 360 175 3.15 3.440 17.02 0 0 Valiant 18.1 6 225 105 2.76 3.460 20.22 1 0 gear carb Mazda RX4 4 4 Mazda RX4 Wag 4 4 Datsun 710 4 1 Hornet 4 Drive 3 1 Hornet Sportabout 3 2 Valiant 3 1
# Write data to a worksheet, renaming columns on the fly
writeData(wb, sht, mtcars %>% rename(!!!rename.vec))
推荐阅读
- angular - Okta 身份验证登录
- regex - 如何在 Linux 中读取文件并获取某些行
- django - 在 docker 中为 django 和 postgres 设置 db_password
- reactjs - 使用 react formik 进行空间验证
- java - Springboot 应用程序抛出了 java.lang.IllegalStateException
- css - 在悬停时在 Div 中的 Img 上显示 Box-Shadow
- python - 如何在python中创建和写入文本文件
- html - 如何在一组选择器上使用深度选择器
- angular - 错误:序列中没有元素。Rxjs onErrorResumeNext() 和 first()
- sql - 基于“月”SQL 对行进行分组