当前位置:网站首页>R语言观察日志(part24)--writexl包
R语言观察日志(part24)--writexl包
2022-06-22 05:45:00 【GoatGui】
学习笔记
转载自:writexl | 商业数据分析师-R 语言数据处理
writexl包
截止到2021年5月17日,writexl包功能比较简单,仅有输出 Excel 功能。快速、不依赖 java 和 Excle 是它绝对的优势,并且输出文件相比openxlsx包较小。
安装
从CRAN安装发行版
install.packages("writexl")
函数参数
write_xlsx()函数参数如下:
write_xlsx(
x,
path = tempfile(fileext = ".xlsx"),
col_names = TRUE,
format_headers = TRUE,
use_zip64 = FALSE
)
| write_xlsx参数 | 解释 |
|---|---|
| x | 要输出的数据框和数据框列表 |
| path | 输出 Excel 的文件名称 |
| col_names | 是否输出表头,默认为TRUE |
| format_headers | 是否将表头居中并加粗,默认为TRUE |
| use_zip64 | 是否支持4Gb文件大小,不是所有的系统都支持 |
use_zip64:不确定该参数的理解是否正确,请自行阅读官方文档,绝大部分时候不用理解该参数。
输出Excel
write_xlsx()函数将数据框保存到 Excel.
如想要输出多个 sheet 时,用list(mysheet1 = iris,mysheet2 = iris)表示即可,代码如下:
library(writexl)
writexl::write_xlsx(iris,path = 'iris.xlsx')
# 输出多sheet
write_xlsx(list(mysheet1 = iris,mysheet2 = iris),path = 'iris.xlsx')
效率比较
和openxlsx包比较输出效率.
library(microbenchmark)
library(nycflights13)
microbenchmark(
writexl = writexl::write_xlsx(flights, tempfile()),
openxlsx = openxlsx::write.xlsx(flights, tempfile()),
times = 2
)
文件大小比较
和openxlsx包比较输出后的 Excel 文件大小.
library(nycflights13)
writexl::write_xlsx(flights, tmp1 <- tempfile())
file.info(tmp1)$size
#> [1] 29139352
openxlsx::write.xlsx(flights, tmp2 <- tempfile())
file.info(tmp2)$size
#> [1] 26833693
按照writexl官方文档的说法,writexl输出的 Excel 文件应该较少,但实际上并不是,不确定是不是openxlsx更新优化过。
其它功能
Excel 公式以及超级链接格式.
df <- data.frame(
name = c("UCLA", "Berkeley", "Jeroen"),
founded = c(1919, 1868, 2030),
website = xl_hyperlink(c("http://www.ucla.edu", "http://www.berkeley.edu", NA), "homepage")
)
df$age <- xl_formula('=(YEAR(TODAY()) - INDIRECT("B" & ROW()))')
write_xlsx(df, 'universities.xlsx')
# cleanup
unlink('universities.xlsx')
当需要输出大型 Excel 文件时,比如超过50万行,我会采用writexl包输出。但是在曾经使用过程中,定时任务采用 writexl 包输出 Excel 文件有时会报错,感觉不稳定,原因不明。现在一般临时性的输出我会采用writexl包,定时任务中采用openxlsx。
边栏推荐
猜你喜欢

Frame profiling

Beifeng helps Nanchang Emergency Management Bureau to build a public-private integrated emergency communication guarantee network

System identification of automatic control principle

Understanding of C pointer

Machine learning Note 6: number recognition of multiple classification problems in logistic regression

mysql基础面试题

经验模式分解(EMD)和希尔伯特-黄变换(HHT)

EMC的解决

不务正业系列7:老照片去除斑点手法

舰载机自动着舰控制系统研究
随机推荐
402-字符串(题目:剑指Offer58-II.左旋转字符串、 28. 实现 strStr()、459.重复的子字符串)
基于断言的验证
mysql基础面试题
单球机器人动力学与控制研究
Assertion based validation
服务器php相关网页开发环境搭建
MFC tabctrl control to modify label size
电热水壶坏了别扔,它很容易修好的!
TCP连接细节问题
PID笔记
Bat 常用批处理脚本记录
使用Systemverilog描述状态机
空调(春季每日一题 50)
Using SystemVerilog to describe a state machine
I2C interface
BinaryFormatter saving and loading game data for unity
Vscode minimalist installation tutorial
小熊派BearPi-HM Micro正式合入OpenHarmony主干
EPP (enhanced parallel port)
[soft test] senior system architecture designer learning experience sharing