Shiny是否为if else语句提供R函数

时间:2019-06-02 15:24:41

标签: r shiny

我有2个条件可以使阵列显示为闪亮。我在R Shiny中尝试了以下代码,但没有尝试输出

library(shiny)

ui <- fluidPage(
sidebarLayout(
sidebarPanel(selectInput("x","Value of x",choices = 
c("Array1","Array2"))),
  mainPanel(h6("Here it is"),
            textOutput("message")
  )
)
)

server <- function(input, output, session) {
output$message <- renderUI(
{
  if(input$x == "Array1")
  {
    renderTable(array(1:20, dim=c(4,5)))
  } else 
    {
    if(input$x == "Array2")
    {
    renderTable(array(1:25, dim=c(5,5)))
    }
  }
  }
 )
}

shinyApp(ui, server)

代码中是否存在问题。请指教

1 个答案:

答案 0 :(得分:3)

library(shiny)

ui <- fluidPage(
    sidebarLayout(
        sidebarPanel(selectInput("x","Value of x",choices = 
                                     c("Array1","Array2"))),
        mainPanel(h6("Here it is"),
                  tableOutput("message")
        )
    )
)

server <- function(input, output, session) {
    output$message <- renderTable(
        {
            if(input$x == "Array1")
            {
                   array(1:20, dim=c(4,5))
            } else 
            {
                if(input$x == "Array2")
                {
                   array(1:25, dim=c(5,5))
                }
            }
        }
    )
}

shinyApp(ui, server)
  1. 您混合使用了多种UI类型。例如RenderUI和textOutput。
  2. 您在renderUI中使用renderTable。 RenderUI需要tableOutput才能正确显示。但我认为您还是不需要它,因为您只需要显示表格即可。
  3. 在R中,更常见的是使用data.framesmatrix代替多维数组。