Я пытаюсь использовать R.Shiny для создания приложения, в котором пользователь может сканировать существующую таблицу данных, а также добавлять в нее данные. Я попытался установить реактивный ввод как набор данных, а затем использовать rbind, чтобы объединить это с уже существующей таблицей. Я думаю, что проблема в основном с разделом сервера.
ui <- fluidPage(
titlePanel="DataTable input",
sidebarLayout(
sidebarPanel(
selectInput("A_new", "A", c("a", "b", "c")),
textInput("B_new", "B:"),
textInput("C_new", "C"),
actionButton("save","Add"),
),
mainPanel(
column(3,
selectInput("A",
"A:",
choices = c("All",
unique(as.character(DT$A))))
),
column(4,
selectInput("B",
"B:",
choices = c("All",
unique(as.character(DT$B))))
),
column(5,
selectInput("C",
"C:",
choices = c("C",
unique(as.character(DT$C))))
),
tableOutput("table1")
)))
server <- function(input, output){
#Add new values to the table when "save" is used.
values <- reactiveValues()
values$df <- DT
df <- eventReactive(input$save, {
# added input data to df
newLine <- isolate(c(input$A_new, input$B_new, input$C_new))
isolate(values$df <- rbind(as.matrix(values$df), unlist(newLine)))
})
#select table display using drop down menu.
output$table1 <- renderDataTable({
data <- df
if (input$A != 'All') {
data <- data[data$A == input$A,]
}
if (input$B != 'All') {
data <- data[data$B == input$B,]
}
if (input$C != 'All') {
data <- data[data$C == input$C,]
}
data
})
}
shinyApp(ui, server)