2015-01-27 3 views
0

Я пытаюсь создать APP с помощью R Shiny. Я хочу загрузить данные (CSV-файл). Затем я хочу заполнить имена столбцов в CSV-файле в выпадающем меню. Я не могу этого сделать.Невозможно заполнить выпадающее меню динамически в R shiny

Пожалуйста, обратитесь к ниже кодов:

---- server.r -----

library(shiny) 
options(shiny.maxRequestSize = 32*1024^2) 


shinyServer(


function(input, output){ 

data <- reactive({ 
    file1 <- input$file 
    if(is.null(file1)){return()} 
    read.table(file=file1$datapath,head=TRUE,sep=",") 

}) 

output$sum <- renderTable({ 
    if(is.null(data())){return()} 
    summary(data()) 

}) 

output$table <- renderTable({ 
    if(is.null(data())){return()} 
    data() 
}) 

# the following renderUI is used to dynamically generate the tabsets when the file is loaded. Until the file is loaded, app will not show the tabset. 
output$tb <- renderUI({ 
    if(is.null(data())) 
    h5("no file loaded") 
    else 
    tabsetPanel(tabPanel("Data", tableOutput("table")),tabPanel("Summary", tableOutput("sum"))) 
}) 

    output$col <- renderUI({ 

    selectInput("phenomena", "Select the Phenomena", names(data)) 
    }) 

}) 

----- ----- ui.R

library(shiny) 


shinyUI(fluidPage(

titlePanel("Hotspot Analysis of EnviroCar Data"), 
sidebarLayout(
sidebarPanel(

    # uploading the file 
    fileInput("file","Upload *.csv file"), # fileinput() function is used to get the file upload contorl option 

    uiOutput("col") 


), 

mainPanel( uiOutput("tb")) 

) 

)) 

ответ

4

Я думаю, что проблема в server.R:

selectInput("phenomena", "Select the Phenomena", names(data)) 

Здесь вы используете data без круглых скобок, так что вы действительно получаете исходный код функции data, а names(data) - NULL. Я думаю, все, что вам нужно, это заменить names(data) на names(data()).

Смежные вопросы