【发布时间】:2019-09-30 22:24:07
【问题描述】:
我有一个包含两个表的应用程序。一个表是一个可渲染的对象,另一个只是一个可渲染的对象。我希望当我更新我的 renderhandsontable 对象时,它会自动更新我的 rendertable 对象。我的 renderhandontable 对象是由应用程序中其他地方的数据使用多个过滤器创建的。
我在这里引用了几篇非常有用的帖子,以帮助我在创建可用于多个输出对象的反应表方面取得进展,例如
How to render multiple output from the same analysis without executing it multiple time? (Shiny)
Get selected rows of Rhandsontable
Handsontable : how to change cell value in render function
但我似乎无法克服这最后一道障碍。我还尝试添加一个按钮(使用 eventReactive),这样当我按下它而不是自动更新表格时,表格会更新,但那里没有运气(肯定会首选自动更新)。
我在下面创建了一个过于简化的服务器代码版本。
#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())
})
我可以让我的表格正确显示并且最初更新数据,但是一旦我对我的表格进行了更新,它就不会反映在我的第二个表格中。
我已经为此苦苦挣扎了很长一段时间,所以任何帮助或提示将不胜感激!
【问题讨论】:
标签: shiny shiny-server shiny-reactivity rhandsontable shinyapps