微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

R Shiny App-如何使下载按钮工作以及如何显示行数?

如何解决R Shiny App-如何使下载按钮工作以及如何显示行数?

enter image description here

您好,我正在使用 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 举报,一经查实,本站将立刻删除。