使用gs_new()写入data.table至谷歌表格耗时过久,是否正常?
这种耗时完全不正常!
270条观测值+21个变量的数据集,正常写入Google Sheets应该只需要几秒到几十秒,十分钟的耗时明显是工具链的效率问题。
你现在用的googlesheets包其实已经处于维护状态,它基于Google Sheets的v3 API,这个版本的API本身在批量数据写入上效率就很低——大概率是它在后台逐行甚至逐单元格发送请求,才导致了这种离谱的耗时。
最快的解决办法:换成googlesheets4包
Google官方现在推荐使用googlesheets4包(基于v4 API),它支持批量写入,能把你的写入时间压缩到正常范围。给你个适配的代码示例:
# 安装并加载包 install.packages("googlesheets4") library(googlesheets4) library(data.table) # 新建表格并写入数据 gs4_create( title = "test", sheets = list(DATA__test = DT) )
如果是要写入已有的表格,用write_sheet(DT, ss = "你的表格ID或标题", sheet = "DATA__test")就行。
如果你一定要用旧的googlesheets包
可以试试先把data.table转成data.frame,然后用gs_edit_cells的批量参数来减少请求次数,比如:
require(googlesheets) gs_file <- gs_new(title = 'test', ws_title = 'DATA__test') # 转成data.frame,按批量写入 gs_edit_cells(gs_file, ws = "DATA__test", input = as.data.frame(DT), byrow = FALSE)
不过这个方法的效率还是远不如googlesheets4,还是更推荐换包解决根本问题。
内容的提问来源于stack exchange,提问作者Ankhnesmerira
相关产品推荐
相关产品推荐

