【发布时间】:2018-03-08 02:58:40
【问题描述】:
我有一个 RShiny 应用程序,我在其中跨不同的选项卡设置面板显示多个数据框。我希望能够将出现在每个面板上的数据帧写入每个面板的一个 csv 文件。我目前正在尝试使用 Shiny 的 downloadHandler 选项来渲染它。
做了一些研究,发现我可以使用 sink() 函数将 R 输出转移到文件中。
这是我尝试将 sink() 合并到 server.R 端的一个这样的按钮中的尝试
output$downloadDemographic <- downloadHandler(
filename = function() {
paste('Demographics', '.csv', sep='')
},
content = function(file) {
sink("Demographics.csv")
cat('Population Demographics')
write.csv(Population)
cat('Geography Demographics')
write.csv(Geography)
sink()
}
)
其中Population 和Geography 是具有相同列数但名称不同的两个数据框。
接收器功能自动将上述数据帧写入我的工作目录中的 csv 文件“Demographics.csv”,但 Shiny 上的 downloadHandler 选项会提示用户即时保存 csv 文件。有点与我在这里想要实现的目标相矛盾。我可能遗漏了什么或犯了一个明显的错误,我不知道。
所需的输出 - https://i.stack.imgur.com/yddrE.jpg
我可以渲染多个下载按钮,将每个数据帧写入多个 csv 文件,但我的一些选项卡设置元素有多达 8 个数据帧,这会使 UI 混乱。
或
我可以在写入 csv 文件之前将多个数据帧强制为一个,但它们都是大小不等的数据帧,将它们格式化为所需的输出将是一个巨大的痛苦。
对我如何以其他方式建立这一点有任何想法吗?
谢谢!
【问题讨论】:
标签: r export-to-csv shiny