Rhsiny: автоматически обновлять объект вывода на основе обновленного объекта Rhandsontable - PullRequest
1 голос
/ 14 мая 2019

У меня есть приложение с двумя таблицами.Одна таблица - это объект, который можно рендерить, а другая - просто объект, который можно рендерить.Я бы хотел, чтобы при обновлении моего объекта renderhandsontable он автоматически обновлял мой объект rendertable.Мой объект renderhandontable создается данными в другом месте приложения с использованием нескольких фильтров.

Я ссылался на несколько очень полезных постов, чтобы помочь мне продвинуться дальше в создании реактивной таблицы, которая могла бы использоваться в нескольких выходных объектахнапример,

Как отобразить несколько результатов одного и того же анализа, не выполняя его несколько раз?(Блестящий)

Получить выбранные строки Rhandsontable

Handsontable: как изменить значение ячейки в функции визуализации

но я не могу преодолеть это последнее препятствие.Я также попытался добавить кнопку (используя eventReactive ), чтобы таблица обновлялась, когда я нажимал ее, а не автоматически, но мне не повезло (и автоматическое было бы определенно предпочтительным).

IЯ создал слишком упрощенную версию моего кода сервера , приведенного ниже.

#dummy data
x = c('A','A','A', 'B','B', 'c')
y = c('G1', 'G1', 'G1', 'G2', 'G2','G3')
z = c('100', '200', '300', '400','500','600')

b=data.frame('Category' = x,
             'Group' = y,
             'Total' = z)

#create reactive object to be used in multiple places
test <- reactive({

  t <-filter(b, b$Category %in% input$cat & b$Group %in% input$group)

  return(t)

})

output$test_table <- renderTable({

  tbl = data.frame(matrix(0, ncol = 4, nrow = 4))

#I know something needs to be done prior to this step to get updated values #of test()

  tbl[1,1] <- test()[1,3]

  return(tbl)
})


output$contents <- renderRHandsontable({

  rhandsontable(test())

})

Я могу сделать так, чтобы мои таблицы отображались корректно, а данные обновлялись изначально, но как только я обновил свойтаблица, это не отражено в моей второй таблице.

Я действительно боролся с этим в течение достаточно долгого времени, поэтому любая помощь или подсказки будут с благодарностью!

1 Ответ

1 голос
/ 14 мая 2019

Пожалуйста, прочитайте это .Вы можете получить доступ к rhandsontable params через input$my_id.Чтобы получить текущие данные, введите $ my_id $ params $ data.

Вот что я думаю, вы ищете:

library(shiny)
library(rhandsontable)

ui <- fluidPage(rHandsontableOutput("contents"),
                tableOutput("test_table"),
                tableOutput("test_table_subset"))

server <- function(input, output) {

  # dummy data
  x = c('A', 'A', 'A', 'B', 'B', 'C')
  y = c('G1', 'G1', 'G1', 'G2', 'G2', 'G3')
  z = c('100', '200', '300', '400', '500', '600')

  b = data.frame('Category' = x,
                 'Group' = y,
                 'Total' = z)

  # create reactive object to be used in multiple places
  test <- reactive({
    t <- b # dplyr::filter(b, b$Category %in% input$cat & b$Group %in% input$group)
    return(t)
  })

  output$contents <- renderRHandsontable({
    rhandsontable(test())
  })

  contentsTableDat <- reactive({
    req(input$contents)
    hot_to_r(input$contents)
  })

  output$test_table <- renderTable({
    contentsTableDat()
  })

  output$test_table_subset <- renderTable({
    contentsTableDat()[1, 3]
  })
}

shinyApp(ui = ui, server = server)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...