如何解决R Shiny App-如何使下载按钮工作以及如何显示行数?
您好,我正在使用 Shiny 进行一个项目。我对 Shiny 非常陌生,所以我能做到这一步的事实让我感到非常惊讶。我目前有一些看起来像包含的屏幕截图的东西。它允许您按年份、大洲和国家/地区修改原始数据框,并在更改时显示数据框的统计信息。
我尝试合并一个下载按钮,但是,每当我按下它(即使是在浏览器中),它都会尝试保存为 .html 而不是 .csv。我每次也看到“失败的服务器问题”。有没有办法来解决这个问题?我还想确保下载的是用户选择的修改后的数据框,而不是原始数据集。
此外,我尝试添加显示行数的文本(类似于列数)。对原始数据集执行此操作非常容易,但我不确定如何执行此操作/显示当数据框被用户视图限制的年份、国家或大洲操作时的结果。
任何有关其中任何一个的建议都会非常有帮助!我已经包含了一个包含所有必需文件的文件 bin 链接 belwo。谢谢!
https://filebin.net/wjctohctz1sxm16y
解决方法
标准下载
这将下载原始数据集。
不确定要为下载的文件命名,因此我将其硬编码为 test.csv。
output$downloadData <- downloadHandler(
filename = function() {
paste("test.csv",sep = "")
},content = function(con) {
write.csv(data,con,row.names = TRUE)
}
)
过滤下载
这将根据选择的年份、国家和大洲对数据进行子集化并下载。 文件名将由以破折号分隔的选择组成,除非未进行任何选择,否则文件名将为“AllData.csv”。
output$downloadData <- downloadHandler(
filename = function() {
selected <-c()
if (input$year != "All") {
selected <-c(selected,input$year)
}
if (input$country != "All") {
selected <-c(selected,input$country)
}
if (input$continent != "All") {
selected <-c(selected,input$continent)
}
if (length(selected) == 0) {
selected <- c("AllData")
}
paste0(paste(selected,collapse="-"),".csv")
},content = function(con) {
if (input$year != "All") {
data <- df[df$Year == input$year,]
}
if (input$country != "All") {
data <- df[df$Country == input$country,]
}
if (input$continent != "All") {
data <- df[df$Continent == input$continent,]
}
write.csv(data,row.names = TRUE)
}
)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。