【问题标题】:Changing which code is used in server.R based on a selected a file type in ui.R - Shiny根据 ui.R 中选择的文件类型更改 server.R 中使用的代码 - 闪亮
【发布时间】:2015-11-16 14:46:18
【问题描述】:

我正在开发一个闪亮的应用程序,为数据集找到最佳的线性回归模型。我希望人们能够输入 .txt、.xls 或 .csv 文件。我的 ui.R 中有这段代码:

 fileInput("mydata", label = h4("Please upload the .xls, .txt, or.csv file you would like included in the analysis.")),

 checkboxGroupInput("filetype", label = h4("Please select the type of data uploaded:"), choices = (".csv", ".txt", ".xls"), selected = ".xls"),

 checkboxGroupInput("header", label = h4("Does your table have a header (column names)?"), choices = ("TRUE", "FALSE"), selected = "TRUE"),

我相信这应该允许他们浏览计算机以查找文件,上传它,然后告诉我文件类型以及是否有标题。

在我的 server.R 中,如果有 .txt 或 .xls,我不确定如何告诉我的输出使用一个代码,如果有 .csv,则使用另一个代码。到目前为止,这就是我所拥有的:

  dat <- read.table(input$mydata, header=input$header) #if .xls or .txt
  dat <- read.csv(input$mydata, header=input$header) #if .csv

我环顾四周,但似乎无法在任何地方找到任何示例。有谁知道我可以添加什么到我的 server.R 代码以便能够根据他们选择的框来区分它?

【问题讨论】:

    标签: r csv checkbox input shiny


    【解决方案1】:

    您应该使用单选按钮而不是组复选框,因为前者只允许一个选择。例如,组复选框将允许他们说他们的文件既是 .csv 又是 .txt。这也意味着用户可以选择他们的文件既有标题也没有标题。

    在你做出改变之后,你所需要的只是一个基本的 if/then 语句。比如……

    header_var <- FALSE
    if (input$header==1) header_var <- TRUE
    
    
    if (input$filetype==1) {  # input 1 means they picked .csv
        dat <- read.csv(input$mydata, header=header_var)
    } 
    

    ... 然后只包含一个 else if 用于选项 2 和一个 else 用于选项 3。

    【讨论】:

      猜你喜欢
      • 2017-08-25
      • 1970-01-01
      • 1970-01-01
      • 2018-09-02
      • 2017-03-21
      • 2014-12-22
      • 2020-08-11
      • 1970-01-01
      • 2020-01-20
      相关资源
      最近更新 更多