Обновить значения в редактируемой таблице в Shiny - PullRequest
0 голосов
/ 27 мая 2020

Я хочу обновить таблицу, редактируемую в приложении Shiny. Я не могу понять, почему в приведенном ниже коде mean() отлично работает в observeEvent(), но не обновляется в output$tekst.

library(shiny)
library(DT)

ui <- fluidPage(
    textOutput('tekst'),
    DTOutput('tabela')
)
server <- function(input, output) {
    A <- data.frame("a" = c(1,2,6,5,NA,1), "b" = c(2,2,NA,5,7,NA))
    output$tabela = renderDT(A
                        , selection = 'none'
                        , editable = 'column')
    observeEvent(input$tabela_cell_edit, {
        A <<- editData(A, input$tabela_cell_edit, 'tabela')
        cat(mean(A$a, na.rm = TRUE), "\n\n")
    })
    output$tekst <- renderText({mean(A$a, na.rm = TRUE)})
}
shinyApp(ui = ui, server = server)

Справка:)

1 Ответ

0 голосов
/ 04 июля 2020

Используйте реактивное значение:

library(shiny)
library(DT)

ui <- fluidPage(
  textOutput('tekst'),
  DTOutput('tabela')
)
server <- function(input, output) {
  A <- data.frame("a" = c(1,2,6,5,NA,1), "b" = c(2,2,NA,5,7,NA))
  reactA <- reactiveVal(A)
  output$tabela = renderDT(A
                           , selection = 'none'
                           , editable = 'column')
  observeEvent(input$tabela_cell_edit, {
    reactA(editData(reactA(), input$tabela_cell_edit, 'tabela'))
  })
  output$tekst <- renderText({mean(reactA()$a, na.rm = TRUE)})
}
shinyApp(ui = ui, server = server)
...