Ошибка отображения DataTable в приложении RShiny - PullRequest
1 голос
/ 02 апреля 2020

Я надеюсь показать реактивные данные для моего приложения Shiny. Я использую renderDataTable() и убедился, что таблица данных возвращается в реактивной функции. Я заметил, что данные отлично отображаются вне Shiny App, поэтому не ошибка переменной / вычисления. Причина, по которой я надеюсь использовать данные в первую очередь, заключается в том, что я могу отображать очищенные имена столбцов и отображать фрейм данных более понятным способом. Пожалуйста, дайте мне знать, что еще я могу попробовать, или если я должен изменить свой подход.

Вот код сервера:

server <- function(input, output) {

  dataset <- reactive({
    shiny_tuition_salary <- datatable(df_tuition_salary %>%
                                        select(name, mean_net_cost, state) %>%
                                        filter(mean_net_cost >= input$input_budget[1],
                                               mean_net_cost <= input$input_budget[2],
                                               state == input$input_state) %>%
                                        select(name, mean_net_cost))

    return(shiny_tuition_salary)
  })

  output$df <- renderDataTable({

    dataset()

  })

}

В настоящее время на вкладке Таблица в приложении ничего не отображается. Приложение также успешно отображает таблицу, когда DataTable вообще не используется (т.е. удаляет datatable() с сервера и использует RenderTable вместо RenderDataTable), поэтому я уверен, что есть проблема с моей реализацией RenderDataTable()

Спасибо!

РЕДАКТИРОВАТЬ: Вот код ui и образец df_tuition_salary, а также

ui <- fluidPage(

  titlePanel("What colleges match your budget and rank?"),

  # Sidebar laayout with input and output definitions ----
  sidebarLayout(

    # Sidebar panel for inputs ----
    sidebarPanel(

      # Input: Slider for the number of bins ----
      sliderInput(inputId = "input_budget",
                  label = "Budget:",
                  min = 0,
                  max = 50000,
                  value = c(0, 15000)),
      selectInput(inputId = "input_state",
                  label = "State (limited data, may limit options):",
                  choices = df_tuition_salary$state)

    ),

    # Main panel for displaying outputs ----
    mainPanel(
      tabsetPanel(
        id = 'output_df',
        # tabPanel("Plot", plotOutput("plot")),
        tabPanel("Table", tableOutput("df"))
      )

    )
  )
)

df_tuition_salary:

df_tuition_salary <- data.frame(name = c("Aaniiih Nakoda College", "Abilene Christian University"),
           mean_net_cost = c(7508.2414, 24884.0828),
           state = c("N/A", "N/A"))

1 Ответ

1 голос
/ 02 апреля 2020

использовать dataTableOutput() функцию.

# Main panel for displaying outputs ----
    mainPanel(
      tabsetPanel(
        id = 'output_df',
        # tabPanel("Plot", plotOutput("plot")),
        tabPanel("Table", dataTableOutput("df"))
      )
...