Я пытаюсь создать приложение Shiny, которое позволяет пользователям редактировать данные, в результате чего изменения сохраняются.Вот минимальный пример:
library(shiny)
library(DT)
ui <- fluidPage(
DT::DTOutput('df')
)
server <- function(session, input, output){
df <- data.frame(x = factor(c("A", "B", "C"), levels = c("A", "B", "C")))
output$df <- DT::renderDT(df,
editable = T)
proxy <- dataTableProxy("df")
observeEvent(input$df_cell_edit, {
info <- input$df_cell_edit
str(info)
i <- info$row
j <- info$col
v <- info$value
df[i, j] <<- DT:::coerceValue(v, df[i, j])
replaceData(proxy, df, resetPaging = FALSE)
})
}
shinyApp(ui, server)
Это позволяет мне редактировать значения x
в строке, но так как x
является фактором, я бы хотел ограничить значения, которые пользовательумеет вводить.В идеале я хотел бы, чтобы это было выполнено с помощью выпадающего меню.Возможна ли эта функциональность с использованием DT :: datatable и Shiny?
Примечание: Я знаю о пакете rhandsontable
, однако я бы предпочел использовать DT, если это возможно.