Можно ли обновить реактивный источник данных, отредактировав DT :: DataTable? Приведенный ниже код основан на этом коде с изменением, что x делается реактивным. Проблема начинается при попытке изменить x в наблюдаемом событии.
Цель наличия x reactive заключается в том, что я намереваюсь получить его из внешней базы данных, а затем внести изменения в DT :: DataTable, чтобы записать обратно в базу данных, чтобы она оставалась синхронизированной с тем, что видит пользователь (я в порядке с выполнением что - это не часть вопроса).
library(shiny)
library(DT)
shinyApp(
ui = fluidPage(
DTOutput('x1')
),
server = function(input, output, session) {
x = reactive({
df <- iris
df$Date = Sys.time() + seq_len(nrow(df))
df
})
output$x1 = renderDT(x(), selection = 'none', editable = TRUE)
proxy = dataTableProxy('x1')
observeEvent(input$x1_cell_edit, {
info = input$x1_cell_edit
str(info)
i = info$row
j = info$col
v = info$value
# problem starts here
x()[i, j] <<- isolate(DT::coerceValue(v, x()[i, j]))
replaceData(proxy, x(), resetPaging = FALSE) # important
})
}
)