R / Shiny динамически генерируемые ползунки не генерируют уникальные значения на отдельных вкладках - PullRequest
0 голосов
/ 19 декабря 2018

Я мог бы помочь мне решить проблему с моим Shiny-кодом.У меня есть приложение с несколькими вкладками для различных видов анализа временных рядов.Каждый анализ использует один и тот же набор данных, который загружается пользователем из файла .csv.Пользователь может выбрать, какие переменные (столбцы) они хотят использовать в анализе.На каждой вкладке я хочу сделать следующее:

  1. 1) рендеринг ползунков на основе выбранных переменных (это сделано и работает)
  2. естьБлестящие создают таблицу для указанного периода прогноза (т.е. 12 месяцев), который пользователь определяет, и заполняют ее значениями из ползунков (это сделано и работает)
  3. ползункина каждой вкладке должно работать независимо, и генерировать уникальную таблицу чисел - это не работает !!и сводит меня с ума! .

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

 #This creates sliders from the selected variables from the reactive function called
 #"df_sel()" - which is just a function that allows the user to select which variables they want from the original .csv file.  Note the use of "tagList".  The RenderUI function below creates as 
 #many sliders as variables selected, and passes in the correct variable name.  
 #It selects the last data value from each column, since this is time series data,
 #the last data value (most recent) was desired.  

 output$scplan <- renderUI({  
    vars <- df_sel()
    n = nrow(vars)
    tagList(lapply(colnames(vars), function(z) {
       sliderInput(
       sprintf("%s",z),
       label = z,
       min = ceiling(min(vars[[z]])), # min value is the minimum of the column
       max = ceiling(max(vars[[z]])), # max is the max of the column
       value = vars[[z]][[n]])
    }))     


 #this reactive function creates a dataframe from the sliders above 
 #with the values the user selected, and the code 
 #repeats the values for as many "input$months" as were selected. 

 sp_numbers <- reactive({
   vars <- df_sel()
   num = as.integer(ncol(vars))
   sp_pred <- data.frame(lapply(colnames(vars), function(z) {
   input[[z]]
     }))
   names(sp_pred) <- colnames(vars)
   n = input$sp_months
   df_sp_pred = data.frame(sp_pred, z=rep(z:n,ea=NROW(input$sp_months)))
   df_sp_pred[1:(length(df_sp_pred)-1)] #this removes the last column which just shows the repeat count
  })

#this code renders the table of the dataframe created above. 
output$spo_table <- renderTable({ 
  sp_numbers()
  })

Когда я помещаю этот код на новую вкладку, мне нужны ползунки для генерации уникальных значений.сейчас таблица заполнена ползунками на первой вкладке.

PS - Я знаю, что обычай состоит в том, чтобы предоставлять код, который можно запустить, но для меня это потребовало бы вставки значительного и большого количества кода;Я думал, что это будет проще.

Кроме того, если есть более простой способ выполнить то, что происходит в этом коде, непременно отредактируйте.

Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...