【问题标题】:Editable renderTable and save values - R Shiny可编辑的渲染表和保存值 - R Shiny
【发布时间】:2017-08-02 04:40:40
【问题描述】:

我有一个代码(类似于另一篇文章)Insert a numeric input for each row - R Shiny,它使用数据框中的现有值生成可编辑的渲染表。现在我想在编辑值后将更新的值保存到同一个数据框中。我该怎么做?

shiny::runApp(list(
ui = basicPage(
tableOutput("My_table")
),
server = function(input, output, session) {

My_table = matrix( 
  c(1:100), 
  nrow=20, 
  ncol=5)

output$My_table <- renderTable({
  input1 <- paste0("<input id='a", 1:nrow(My_table), "'"," value='",My_table[,1],"'" ," class='shiny-bound-input' type='character' style='width: 50px;'>")
  input2 <- paste0("<input id='b", 1:nrow(My_table), "'"," value='",My_table[,5],"'" ," class='shiny-bound-input' type='number' style='width: 50px;'>")
  cbind(input1, My_table[,c(2,3,4)], input2)
}, sanitize.text.function = function(x) x)

}
))

任何帮助将不胜感激。谢谢。

【问题讨论】:

标签: r shiny


【解决方案1】:

我可以带你到一半。您需要使用静态值解析表的动态输入并创建一个新表 - 然后将新表(或数组)传递给 Shiny。此外,可能还有比单击表格获得响应更好的方法。

不管怎样,这里是:

shiny::runApp(list(
  ui = basicPage(
    # a div named mydiv

    tableOutput("myTable"),
    # javascript code to send data to shiny server
    tags$script('
    document.getElementById("myTable").onclick = function() {
                 var value = $("table tr").value();
                 Shiny.onInputChange("mydata", value);
                 };
                 '),
    tableOutput("results")
  ),
  server = function(input, output, session) {

    My_table = matrix( 
      c(1:100), 
      nrow=20, 
      ncol=5)

    output$myTable <- renderTable({
      input1 <- paste0("<input id='a", 1:nrow(My_table), "'"," value='",My_table[,1],"'" ," class='shiny-bound-input' type='character' style='width: 50px;'>")
      input2 <- paste0("<input id='b", 1:nrow(My_table), "'"," value='",My_table[,5],"'" ," class='shiny-bound-input' type='number' style='width: 50px;'>")
      cbind(input1, My_table[,c(2,3,4)], input2)
    }, sanitize.text.function = function(x) x)

    output$results = renderTable({
      input$mydata })
  }

))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-11
    • 2021-02-05
    • 2020-11-08
    • 1970-01-01
    • 2020-04-26
    • 2020-09-14
    相关资源
    最近更新 更多