Есть ли функция R в Shiny для оператора if else - PullRequest
0 голосов
/ 02 июня 2019

У меня есть 2 условия, чтобы массивы отображались блестящими.Я попытался с приведенным ниже кодом в R блестящий, но не вывод

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 Ответ

3 голосов
/ 02 июня 2019
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. Вы перепутали несколько типов пользовательского интерфейса. RenderUI и textOutput, например.
  2. Вы используете renderTable внутри renderUI. RenderUI требуется tableOutput для правильного отображения. Но я думаю, что вам все равно это не нужно, потому что все, что вам нужно, это отобразить таблицу.
  3. В R гораздо чаще используется data.frames или matrix вместо многомерных массивов.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...