我试图在用户按下 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)
)
```
尝试这个:
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 数据框。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)