Я мог бы помочь мне решить проблему с моим Shiny-кодом.У меня есть приложение с несколькими вкладками для различных видов анализа временных рядов.Каждый анализ использует один и тот же набор данных, который загружается пользователем из файла .csv.Пользователь может выбрать, какие переменные (столбцы) они хотят использовать в анализе.На каждой вкладке я хочу сделать следующее:
- 1) рендеринг ползунков на основе выбранных переменных (это сделано и работает)
- естьБлестящие создают таблицу для указанного периода прогноза (т.е. 12 месяцев), который пользователь определяет, и заполняют ее значениями из ползунков (это сделано и работает)
- ползункина каждой вкладке должно работать независимо, и генерировать уникальную таблицу чисел - это не работает !!и сводит меня с ума! .
Проблема в том, что один набор ползунков генерирует одинаковые значения для всех таблиц на каждой вкладке (в приложении, которое запускает анализ, есть 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 - Я знаю, что обычай состоит в том, чтобы предоставлять код, который можно запустить, но для меня это потребовало бы вставки значительного и большого количества кода;Я думал, что это будет проще.
Кроме того, если есть более простой способ выполнить то, что происходит в этом коде, непременно отредактируйте.
Спасибо!