我有一个R数据帧,我在R ShinyTable中渲染。 ShinyTable中的编辑效果很好。
我的问题是:如何进行用户所做的编辑并更新我的数据框。
以下代码取自ShinyTable的教程网站。它有一个错误:"尝试访问已弃用的shinysession $ session对象。请直接访问shinysession对象。"但代码中没有任何内容涉及shinySession。
如果我可以获得帮助来回答我的主要问题(如何进行用户所做的编辑),我可以解决此错误。
library(shiny)
library(shinyTable)
server <- function(input, output, session) {
rv <- reactiveValues(cachedTbl = NULL)
output$tbl <- renderHtable({
if (is.null(input$tbl)){
tbl <- matrix(0, nrow=3, ncol=3)
rv$cachedTbl <<- tbl
return(tbl)
} else{
rv$cachedTbl <<- input$tbl
return(input$tbl)
}
})
output$tblNonEdit <- renderTable({
input$actionButtonID
isolate({
rv$cachedTbl
})
})
}
ui <- shinyUI(pageWithSidebar(
headerPanel("shinyTable with actionButton to apply changes"),
sidebarPanel(
helpText(HTML("
Make changes to the upper table, press the button to activate.
<p>Created using <a href = \"http://github.com/trestletech/shinyTable\">shinyTable</a>."))),
mainPanel(
htable("tbl"),
actionButton("actionButtonID","apply edits"),
tableOutput("tblNonEdit")
)
))
shinyApp(ui = ui, server = server)
答案 0 :(得分:0)
看起来像shineTable已经更新了几年。会话错误发生在包代码中,而不是代码中。
请尝试使用rhandsontable。
我发现这个问题/答案的一些示例代码有效: Update handsontable by editing table and/or eventReactive
library(shiny)
library(rhandsontable)
did_recalc <- FALSE
ui <- fluidPage(
rHandsontableOutput('table'),
textOutput('result'),
actionButton("recalc", "generate new random vals and calculate")
)
server <- function(input,output,session)({
values <- reactiveValues(data=as.data.frame(runif(2)))
observe({
input$recalc
values$data <- as.data.frame(runif(2))
})
observe({
if(!is.null(input$table))
values$data <- hot_to_r(input$table)
})
output$table <- renderRHandsontable({
rhandsontable(values$data)
})
output$result <- renderText({
sum(values$data)
})
})
shinyApp(ui = ui, server = server)