R 如何选择样本数据集或用户输入的数据集?

R 如何选择样本数据集或用户输入的数据集?,r,shiny,R,Shiny,我正在尝试创建一个应用程序,允许用户选择样本数据集或将自己的数据上传为csv文件 如何编写ifelse或switch语句来选择将哪个文件发送到数据集也许您应该让用户选择通过radioButton从包中选择自己的数据或数据集条件面板将帮助您仅显示选定的输入。那么,在任何时候都很容易选择其中一个。试试这个 library(shiny) ui <- fluidPage( sidebarLayout( sidebarPanel( awesomeRadio(

我正在尝试创建一个应用程序,允许用户选择样本数据集或将自己的数据上传为csv文件


如何编写
if
else
switch
语句来选择将哪个文件发送到
数据集也许您应该让用户选择通过
radioButton
从包中选择自己的数据或数据集<代码>条件面板将帮助您仅显示选定的输入。那么,在任何时候都很容易选择其中一个。试试这个

library(shiny)

ui <- fluidPage(
  sidebarLayout(
    sidebarPanel(
      awesomeRadio(
        inputId = "choosedata",
        label = "Choose own data or package datasets",
        choices = list("Own Data" = "own", "Package Datasets" = "pdata"),
        selected = "own",
        inline = TRUE,
        status = "success",
        width = "300px"
      ),
      conditionalPanel(condition = "input.choosedata == 'pdata'",
                       selectInput("dataset", label = "Choose sample dataset", choices = ls("package:datasets"), selected=ls("package:datasets")[[4]])
      ),
      conditionalPanel(condition = "input.choosedata == 'own'",
                       fileInput("file1", "Choose CSV File", accept = ".csv"),
                       checkboxInput("header", "Header", TRUE)
      ),
      
      verbatimTextOutput("summary")
      
    ),
    
    
    mainPanel(
      DTOutput("table")
    )
  )
)


server <- function(input, output) {
  
  dataset <- reactive({
    
    if (input$choosedata == "own") {
      file <- input$file1
      if (!is.null(file)) {
        ext <- tools::file_ext(file$datapath)
        validate(need(ext == "csv", "Please upload a csv file"))
        mydata <- read.csv(file$datapath, header = input$header)
      }else mydata <- NULL
    } else {
      mydata <- get(input$dataset, "package:datasets")
    }
    
    mydata
  })
  
  output$summary <- renderPrint({
    req(dataset())
    summary(dataset())
  })
  
  output$table <- renderDT({
    req(dataset())
    dataset()
  })
}

shinyApp(ui = ui, server = server)
库(闪亮)

ui是否有理由
获取(…)
数据集并忽略返回值?通常你会把它分配给一个变量。很抱歉,我在创建一个可复制的示例时没有注意到代码,这是我从中得到的。
library(shiny)

ui <- fluidPage(
    sidebarLayout(
        sidebarPanel(
            selectInput("dataset", label = "Choose sample dataset", choices = ls("package:datasets")),
            fileInput("file1", "Choose CSV File", accept = ".csv"),
            checkboxInput("header", "Header", TRUE),
            verbatimTextOutput("summary")
            
        ),

      
        mainPanel(
            tableOutput("table")
        )
    )
)


server <- function(input, output) {
    
        dataset <- reactive({
        
            get(input$dataset, "package:datasets")
            
            file <- input$file1
            ext <- tools::file_ext(file$datapath)
            
            req(file)
            validate(need(ext == "csv", "Please upload a csv file"))
            
            read.csv(file$datapath, header = input$header)
        })
       
        output$summary <- renderPrint({
            summary(dataset())
        })
       
        output$table <- renderTable({
            dataset()
        })
    }

shinyApp(ui = ui, server = server)

library(shiny)

ui <- fluidPage(
  sidebarLayout(
    sidebarPanel(
      awesomeRadio(
        inputId = "choosedata",
        label = "Choose own data or package datasets",
        choices = list("Own Data" = "own", "Package Datasets" = "pdata"),
        selected = "own",
        inline = TRUE,
        status = "success",
        width = "300px"
      ),
      conditionalPanel(condition = "input.choosedata == 'pdata'",
                       selectInput("dataset", label = "Choose sample dataset", choices = ls("package:datasets"), selected=ls("package:datasets")[[4]])
      ),
      conditionalPanel(condition = "input.choosedata == 'own'",
                       fileInput("file1", "Choose CSV File", accept = ".csv"),
                       checkboxInput("header", "Header", TRUE)
      ),
      
      verbatimTextOutput("summary")
      
    ),
    
    
    mainPanel(
      DTOutput("table")
    )
  )
)


server <- function(input, output) {
  
  dataset <- reactive({
    
    if (input$choosedata == "own") {
      file <- input$file1
      if (!is.null(file)) {
        ext <- tools::file_ext(file$datapath)
        validate(need(ext == "csv", "Please upload a csv file"))
        mydata <- read.csv(file$datapath, header = input$header)
      }else mydata <- NULL
    } else {
      mydata <- get(input$dataset, "package:datasets")
    }
    
    mydata
  })
  
  output$summary <- renderPrint({
    req(dataset())
    summary(dataset())
  })
  
  output$table <- renderDT({
    req(dataset())
    dataset()
  })
}

shinyApp(ui = ui, server = server)