2017-06-22 83 views
0
#server 

tables <- reactiveValues(XVALUES=data.frame(), 
        YVALUES=data.frame()) 

output$userinput <- renderDataTable({ 

    if(input$name=="X" & input$city=="BOS" & (is.data.frame(tables$XVALUES) && nrow(tables$XVALUES)!=0)){ 
     cbind(data.frame(Serial=seq(1:5)),tables$XVALUES)} 
    else if(input$name=="X" & input$city=="BOS" & (is.data.frame(tables$XVALUES) && nrow(tables$XVALUES)==0)){} 
    else if (input$name=="Y" & input$city=="NYC" & (is.data.frame(tables$YVALUES) && nrow(tables$YVALUES)!=0)){ 
    cbind(data.frame(Serial=seq(1:5)),tables$YVALUES)} 
    else if (input$name=="Y" & input$city=="NYC" & (is.data.frame(tables$YVALUES) && nrow(tables$YVALUES)==0)){} 

}) 

基于两个用户输入创建和通过添加额外串行列到XVALUES或YVALUES数据帧显示一个新的数据帧。问题是,即使XVALUES/YVALUES数据框为空,它仍会显示串行列。如果XVALUES数据帧为空,我不想显示任何内容。我在哪里错了?在renderDataTable(光泽),使用ifelse

回答

0

我无法重现该错误。我的机器上的表格是空的。这里是我输入的内容

server = function(input, output, session){ 
    tables <- reactiveValues(XVALUES=data.frame(), 
          YVALUES=data.frame()) 

    output$userinput <- renderDataTable({ 
    if(input$name=="X" & input$city=="BOS" & (is.data.frame(tables$XVALUES) && 
     nrow(tables$XVALUES)!=0)){ 
     cbind(data.frame(Serial=seq(1:5)),tables$XVALUES)} 
    else if(input$name=="X" & input$city=="BOS" & (is.data.frame(tables$XVALUES) && 
     nrow(tables$XVALUES)==0)){} 
    else if (input$name=="Y" & input$city=="NYC" & (is.data.frame(tables$YVALUES) && 
     nrow(tables$YVALUES)!=0)){ 
     cbind(data.frame(Serial=seq(1:5)),tables$YVALUES)} 
    else if (input$name=="Y" & input$city=="NYC" & (is.data.frame(tables$YVALUES) && 
     nrow(tables$YVALUES)==0)){} 
    }) 
} 

ui = fluidPage(
    selectInput("name","name",c("X","Y")), 
    selectInput("city","city",c("BOS","NYC")), 
    dataTableOutput("userinput") 
) 

shinyApp(ui, server)