난 당신이 예를 들어 actionButton
을 클릭 할 때 reactive
을 수정할 생각한다. 이 목적을 위해 나는 reactiveValues
을 사용할 것이다. 옵저버 내부의 reactiveValue
을 observe
또는 observeEvent
과 같이 수정할 수 있습니다. 이 간단한 예제 밖으로
점검 :
summarized <- data.frame(id = 1:20, group = letters[1:4], TY_COMP = runif(20), LY_COMP = runif(20))
library(shiny)
ui <- fluidPage(
verbatimTextOutput("text"),
actionButton("btn", "Add the 'cac' column to summarized")
)
server <- function(input, output){
rv <- reactiveValues(summarized = summarized)
output$text <- renderPrint(rv$summarized)
observeEvent(input$btn, {
rv$summarized$cac <- summarized$TY_COMP/summarized$LY_COMP - 1
})
summarized_mod <- reactive({
summarized()$TY_COMP/summarized()$LY_COMP-1
})
}
shinyApp(ui, server)
또 다른 옵션은 추가 열이있는 다른 reactive
을 생성하는 것입니다. 이 방법을 사용할 수는 있지만 사용 사례에 따라 첫 번째 해결 방법을 권합니다.
예 :
summarized <- data.frame(id = 1:20, group = letters[1:4], TY_COMP = runif(20), LY_COMP = runif(20))
library(shiny)
ui <- fluidPage(
verbatimTextOutput("text1"),
verbatimTextOutput("text2")
)
server <- function(input, output){
output$text1 <- renderPrint(summarized_orig())
output$text2 <- renderPrint(summarized_mod())
summarized_orig <- reactive({
summarized
})
summarized_mod <- reactive({
df <- summarized_orig()
df$cac <- summarized_orig()$TY_COMP/summarized_orig()$LY_COMP - 1
df
})
}
shinyApp(ui, server)
출처
2017-12-14 11:18:20
GyD