Я устанавливаю блестящее приложение, которое запрашивает набор данных, запрашивает информацию об указанном наборе данных, а затем запускает ряд аналитических моделей на указанном наборе данных, принимая во внимание информацию о наборе данных (например, именапеременных для корректировки в регрессии).Приложение начинается с простого пользовательского интерфейса с вводом данных.После того, как пользователь загрузил свои данные, я бы хотел, чтобы пользовательский интерфейс динамически добавил новый раздел, который просит пользователя выбрать подмножество переменных из меток столбцов своего набора данных.
Я работаю с RStudio Server через компьютер с Linux AWS.
Мое приложение создается как дополнение к другому пакету R, который служит оберткой для большинства статистических функций, которые мне требуются.Поскольку приложение довольно большое, пользовательский интерфейс состоит из некоторого стандартного текста и ряда функций, которые вызывают tabItems для пользовательского интерфейса.
В приведенном ниже примере пользовательский интерфейс имеет стандартный ввод данных пользователем.В дополнение к этому я попытался использовать блестящий :: renderUI на стороне сервера, чтобы взять предоставленный пользователем набор данных, прочитать столбцы и возвратить набор столбцов с помощью spark :: varSelectInput ().К сожалению, мое приложение не предоставляет этот новый ввод после загрузки данных.
ui_data_1 <- function(){
y<-tabItem(tabName = "load_dat",
shiny::tabsetPanel(type = "tabs",
# Data upload ---- -
h2("Data"),
p("Please upload your data file"),
shiny::fileInput(
inputId = "data_file", label = "Upload patient data file (.csv Only)",
accept = c(".csv")
),
h2("Treatment"),
p("Instructions for treatment"),
shiny::uiOutput("variables"))
)
)
return(y)
}
server_data_1 <- function(){
y <- shiny::renderUI({
inFile <- input$data_file
# Load data
if (is.null(inFile)) {
df <- shiny::reactive({NULL})
} else {
df <- shiny::reactive({read.csv(inFile$datapath, header = input$header)})
}
varnames <- colnames(df())
shiny::varSelectInput(
inputId = "treat",
label = "Treatment Variable",
data = c(varnames)
)
})
return(y)
}
#UI.R
body <- shinydashboard::dashboardBody(
ui_data_1()
)
ui <- shinydashboard::dashboardPage(header, sidebar, body, skin = "black")
#Server.R
server <- function(input, output) {
output$variables <- server_data_1()
}
shiny::shinyApp(ui, server)
Приложение загружается правильно, как и меню загрузки данных.Когда я загружаю данные, я получаю уведомление о том, что загрузка прошла успешно.Метка, связанная с inputId = "Treat", видна все время.Однако меню выбора переменных не заполняется после загрузки данных, как ожидалось.Возможно, я сделал что-то не так.Спасибо заранее за любые советы.