вы можете использовать hot_to_r
как в
modified_table <- reactive({
hot_to_r(req(input$table_id)) ## req!
})
, чтобы получить доступ к текущему состоянию таблицы, включая изменения от пользователя.req
необходим, потому что hot_to_r
не может справиться с NULL
s.table_id
должен быть выходным идентификатором, который вы используете для возвращаемого значения renderRHandsontable
.
output$table_id <- renderRHandsontable({
rhandsontable(initial_table) ## need to call converter
})
Комплексные проверки, на которые вы ссылаетесь (например, этот , # 64-81) разрешить двустороннее соединение таблиц в том смысле, что они могут обновляться как от пользователя, так и от сервера.Однако в этой простой настройке, которую я изложил здесь, modified_table
создается с reactive
, поэтому он может обновляться только пользователем.
Я полностью согласен, что этот пакет можно сделать более удобным для пользователя, разрешив NULL
в hot_to_r
и путем автоматического вызова rhandsontable
в renderRHandsontable
, если возвращаемое значение равно data.frame
, но это то, с чем вам придется работать.
Вот полное приложение, демонстрирующее эту настройку
library(shiny)
library(rhandsontable)
ui <- fluidPage(
rHandsontableOutput("table_id"),
tableOutput("second_table")
)
server <- function(input, output, session) {
initial_table <- head(iris)
output$table_id <- renderRHandsontable({
rhandsontable(initial_table) ## need to call converter
})
modified_table <- reactive({
hot_to_r(req(input$table_id)) ## req!
})
output$second_table <- renderTable({
modified_table()
})
}
shinyApp(ui, server)
Чтобы получить доступ к определенному столбцу, вы можете использовать modified_table()$column_name
внутри реактивного контекста.