Блестящие данные обновления от selectInput - PullRequest
0 голосов
/ 13 октября 2018

Я столкнулся с проблемой получения выходных данных selectizeInput для обновления выгруженных данных CSV.Конкретный кодовый блок, имеющий проблему:

observeEvent(input$Go, {
    tmp <- values$df_data
    output$Grp = renderUI({

      lvls <- tmp %>%
        pull(Group) %>%
        levels

      selectizeInput('group', 'Groups', choices = lvls, selected = lvls[1], multiple = FALSE)


    })



    tmp1 <- tmp %>% 
      filter(Group == "A") # need to change here by updating the value from input$Grp
    values$df_data <- tmp1


  })

Столбец «Группа» фильтруется с жестко закодированным значением.Мое намерение состоит в том, чтобы сделать это динамическим, получая значения "Grp".Изображение ниже показывает проблему

введите описание изображения здесь

Полный код ниже

library(shinydashboard)
 library(shiny)
 library(dplyr)
 library(tidyr) 

ui = dashboardPage(
   dashboardHeader(),
   dashboardSidebar( 
     width = 200,
     sidebarMenu(
       menuItem("File Upload", icon = shiny::icon("table")),

       fileInput('datafile', 'Choose CSV file',
                 accept=c('text/csv', 'text/comma-separated-values,text/plain')),
       uiOutput('Grp'),
       actionButton("Go","Subset Data"))
   ),

   dashboardBody( fluidPage(


     titlePanel("Data Table"),


     sidebarLayout(
       tabPanel("tab",
                div( id ="Sidebar",sidebarPanel(

                ))), 


       mainPanel(
                 DT::dataTableOutput("tableOut")


       )
     )
   )
   )
 )

server = function(input, output, session) {




  values <- reactiveValues(df_data = NULL)

  observeEvent(input$datafile, {
    values$df_data <- read.csv(input$datafile$datapath)


  })

  observeEvent(input$Go, {
    tmp <- values$df_data
    output$Grp = renderUI({

      lvls <- tmp %>%
        pull(Group) %>%
        levels

      selectizeInput('group', 'Groups', choices = lvls, selected = lvls[1], multiple = FALSE)


    })

    tmp1 <- tmp %>% 
      filter(Group == "A") # need to change here by updating the value from input$Grp
    values$df_data <- tmp1


  })

  output$tableOut <- DT::renderDataTable({

    DT::datatable(values$df_data)



  })


}

shinyApp(ui = ui, server = server)

Я загружаю файл .csv.Приведенные ниже данные похожи на те, что у меня есть.

set.seed(12345)
data <- data.frame(DATE = rep(seq(as.Date("2014-01-01"), length.out = 200,
by = "week"), each = 4), Group = rep(c("A", "B", "C", "D"), each = 200),
       ValueColumn = rnorm(800))

1 Ответ

0 голосов
/ 13 октября 2018

Добро пожаловать на сайт здесь.Это также проблема, с которой я столкнулся в последнее время - похоже, она не изолирована от selectizeInput, а относится к любым новым данным, которые вы пытаетесь заставить «блестящему» приложению «видеть».Вот пара вещей, которые нужно попробовать:

  1. Удалите все каталоги _cache в корне вашего сервера, а затем попробуйте загрузить снова.Если нет никакой разницы,
  2. touch .csv файлов (или внесите изменения в Windows, чтобы получить новую метку времени), а затем повторите попытку загрузки.Если нет никакой разницы,
  3. Перезапустите сервер глянцевого доступа с помощью sudo systemctl restart shiny-server, где последний аргумент - это имя вашего сервера глянцевого сервера (по умолчанию shiny-server)

Это последнее решениеэто тот, который работал наиболее надежно для меня - это # ​​2 из этого документа ( Блестящее приложение не отражает изменения в обновлении файла RData ) - для перезапуска блестящего сервера из командной строки.Это работало надежно и регулярно.Другие идеи в этом решении не работали на моем компьютере, поэтому они должны зависеть от спецификаций вашего сервера или клиента.

Второе, что мне помогло, это использование reactiveTimer (https://shiny.rstudio.com/reference/shiny/0.14/reactiveTimer.html).

В любом случае, если вы бьетесь этим об стену, это непростая проблема, которая беспокоит многих из нас. Удачи в выборе лучшего решения для вашего контекста.

...