闪亮的R -Select输入不起作用

时间:2016-12-06 13:27:08

标签: r shiny shinydashboard

我正在尝试使用Shiny(第一次使用)在R中构建应用程序。

步骤1:阅读Csv数据 第2步:每个变量的直方图 第3步:进一步分析。

我能够读取csv数据但无法在selectinput中显示数据的名称。

代码正在运行,但变量名称的显示无效。 我的代码是:

library(shiny)
ui<-navbarPage("Model Developement by Subhasish",
           tabPanel("Data Import",sidebarLayout(sidebarPanel( fileInput("file","Upload your CSV",multiple = FALSE),
                                                              tags$hr(),
                                                              h5(helpText("Select the read.table parameters below")),
                                                              checkboxInput(inputId = 'header', label = 'Header', value = FALSE),
                                                              checkboxInput(inputId = "stringAsFactors", "stringAsFactors", FALSE),
                                                              radioButtons(inputId = 'sep', label = 'Separator', choices = c(Comma=',',Semicolon=';',Tab='\t', Space=''), selected = ',')
           ),
           mainPanel(uiOutput("tb1"))
           ) ),
           tabPanel("Histogram",sidebarLayout(sidebarPanel(
             selectInput("headers","Select variable to view Histogram",choices =as.list(names(data)),multiple = FALSE)),mainPanel("mainpanel"))),
           tabPanel("More")
)
server<-function(input,output) { data <- reactive({
  file1 <- input$file
  if(is.null(file1)){return()} 
  read.table(file=file1$datapath, sep=input$sep, header = input$header, stringsAsFactors = input$stringAsFactors)

})  
output$table <- renderTable({
  if(is.null(data())){return ()}
  data()
})
output$tb1 <- renderUI({
  tableOutput("table")
})
}
shinyApp(ui=ui,server=server)

感谢先进的帮助。

1 个答案:

答案 0 :(得分:1)

我在这里添加了一个如何继续的示例。我用我的虚拟.csv文件测试了它,所以它应该可以工作。我还为直方图添加了一些测试用例,因此您不会打印错误。

我添加了以下更改

  1. 我使用renderUI创建名为标题的selectInput
  2. 最好使用tableOutput("table")
  3. 直接呈现表格输出
  4. 我添加了直方图,如你想要的那样
  5. 示例:

    library(shiny)
    ui<-navbarPage("Model Developement by Subhasish",
                   tabPanel("Data Import",sidebarLayout(sidebarPanel( fileInput("file","Upload your CSV",multiple = FALSE),
                                                                      tags$hr(),
                                                                      h5(helpText("Select the read.table parameters below")),
                                                                      checkboxInput(inputId = 'header', label = 'Header', value = FALSE),
                                                                      checkboxInput(inputId = "stringAsFactors", "stringAsFactors", FALSE),
                                                                      radioButtons(inputId = 'sep', label = 'Separator', choices = c(Comma=',',Semicolon=';',Tab='\t', Space=''), selected = ',')
                   ),
                   mainPanel(tableOutput("table")))),
                   tabPanel("Histogram",sidebarLayout(sidebarPanel(
                     uiOutput("ui1")),
                     mainPanel(plotOutput("myhist")))),
                   tabPanel("More")
    )
    server<-function(input,output) { 
    
      data <- reactive({
        file1 <- input$file
        if(is.null(file1)){return()} 
        read.table(file=file1$datapath, sep=input$sep, header = input$header, stringsAsFactors = input$stringAsFactors)
      }) 
    
      output$table <- renderTable({
        if(is.null(data())){return ()}
        data()
      })
      output$ui1 <- renderUI({
        selectInput("headers","Select variable to view Histogram",choices =as.list(names(data())),multiple = FALSE)
      })
    
      output$myhist <- renderPlot({
        histdata <- suppressWarnings(as.numeric((data()[,names(data()) %in% input$headers])))
        histdata <- histdata[!is.na(histdata)]
        if(length(histdata) == 0){
          return()
        }
        hist(histdata,breaks=10)
        box();grid() 
      })
    }
    shinyApp(ui=ui,server=server)
    

    enter image description here