在R中如何将DT包生成的datatable对象转为dataframe供write_xlsx使用
解决方案
问题原因
datatable()是DT包用于生成交互式网页表格的函数,返回的是htmlwidget类对象,而非普通数据结构,对象内存储的是表格渲染参数、样式配置以及原始数据等多类信息,直接用data.frame()强制转换只能得到控件的配置参数,无法获取你需要的业务数据。
可行方案
方案1:直接导出原始数据集(推荐)
你生成DT对象用的源数据Test本身就是标准data.frame格式,直接导出即可,无需经过DT对象转换:
write_xlsx(Test, 'C:/Users/Carlos/Desktop/datas.xlsx')
方案2:从DT对象中提取原始数据
如果已经丢失原始数据集,仅保留了z对象,可以从z的嵌套结构中提取存储的原始数据:
# 提取DT对象内存储的原始数据 target_df <- z$x$data # 导出提取到的数据 write_xlsx(target_df, 'C:/Users/Carlos/Desktop/datas.xlsx')
注意事项
如果你的DT表格在前端做了列筛选、排序、隐藏等交互操作,静态z对象中存储的仍是未处理的全量原始数据,若需要导出交互后的过滤结果,需要搭配Shiny服务端逻辑获取实时渲染数据,本地静态DT对象无法直接得到筛选后的子集。
内容的提问来源于stack exchange,提问作者user17163779
相关产品推荐
相关产品推荐

