我有一个RShiny应用程序,我在不同的标签设置面板上显示多个数据帧。我希望能够将每个面板上出现的数据帧写入每个面板的一个csv文件。我目前正在尝试使用Shiny的downloadHandler选项来渲染它。
做了一点研究,发现我可以使用sink()函数将R输出转移到文件中。
这是我尝试将sink()合并到服务器上的一个这样的按钮上.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文件&#39; Demographics.csv&#39;进入我的工作目录,但Shiny上的downloadHandler选项提示用户动态保存csv文件。有点像我想在这里实现的那样。我可能遗漏了一些东西或犯了一个明显的错误,我不知道。
所需的输出 - https://i.stack.imgur.com/yddrE.jpg
我可以渲染多个下载按钮,将每个数据帧写入多个csv文件,但是我的一些标签设置元素有多达8个数据帧,这会使UI变得混乱。
或
在写入csv文件之前,我可以将多个数据帧强制转换为单个数据帧,但它们都是不等大小的数据帧,并将它们格式化为所需的输出将是一个巨大的痛苦。
有关我如何以其他方式建立此事的任何想法?
谢谢!
答案 0 :(得分:0)
其他选择:
以下是使用R数据集包中的四个数据帧的两个选项的示例。
perl -ne 'push @a, $_; END{ print sort { length $a <=> length $b } @a }' file