#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数据框为空,我不希望显示任何内容。我在哪里错了?
答案 0 :(得分: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 )