如何使用按钮更新闪亮的dataTable

时间:2018-05-09 11:02:41

标签: r shiny

一旦用户按下Shiny中的按钮,我就会尝试简单地更新数据框的一列。关于当前显示的数据帧如何传递到服务器端功能,我有点困惑。

按下按钮后,列cyl应增加10.如果再次按下该按钮,列应重新计算并再乘以10等。

到目前为止,我已经这样做了,但按下按钮时似乎没有任何事情发生。

---
title: "My dataframe refresh"
output: html_document
runtime: shiny
---

```{r, echo=FALSE}
library(EndoMineR)
shinyApp(

ui <- fluidPage(
  DT::dataTableOutput("mytable"),
  actionButton("do", "Click Me")
),




  server = function(input, output,session) {

    #Load the mtcars table into a dataTable
     output$mytable = DT::renderDataTable({
    mtcars
  })

    #A test action button
       observeEvent(input$do, {
    renderDataTable(mtcars$cyl*10)
  })   
  },
  options = list(height = 800)
)
```

1 个答案:

答案 0 :(得分:6)

试试这个:

library(shiny)
library(DT)

RV <- reactiveValues(data = mtcars)

  app <- shinyApp(


    ui <- fluidPage(
    DT::dataTableOutput("mytable"),
    actionButton("do", "Click Me")
  ),


  server = function(input, output,session) {

    #Load the mtcars table into a dataTable
    output$mytable = DT::renderDataTable({
      RV$data
    })

    #A test action button
    observeEvent(input$do, {
      RV$data$cyl <- RV$data$cyl * 10 
    })   
  }

  )

  runApp(app)

我总是存储我的数据框,特别是如果它们应该在reactiveValues列表中被动。之后,您只需渲染数据,然后在观察步骤中覆盖原始数据框。您必须显式覆盖数据才能存储结果,mtcars$cyl * 10不会影响mtcars数据框。