单击操作按钮后如何填充变量?

时间:2017-07-28 01:27:21

标签: r shiny

我正在尝试构建一个简单的滚轮,可以单击按钮并填充一系列变量。我确信这是一个简单的解决方案,但我只是很难让它工作。

这就是我所拥有的。我按照我的意愿设置了界面,但基本上我想为强度行获取一个新值。

library(shiny)
ui = fluidPage(    
  titlePanel(""),
  sidebarLayout(      
    sidebarPanel(
      textInput("char_name","Name"),
      textInput("char_sex","Sex"),
      actionButton("rollButton", "Roll!", width = "100%"),
      hr(),
      helpText("Please consult _ if you need assitance.")
    ),
    mainPanel(
      htmlOutput("name"),
      htmlOutput("sex"),
      htmlOutput("natl"),
      htmlOutput("strength")
    )
  )
)

server = function(input, output) {
  observe({
    if(input$rollButton > 0) {
      strength <- sum(sample(1:6,3,replace=TRUE))
    }
  })
  output$name <- renderText({
    input$rollButton
    isolate(paste0('<b>Name</b>: ', input$char_name))
  })
  output$sex <- renderText({
    input$rollButton
    isolate(paste0('<b>Sex</b>: ', input$char_sex))
  })
  output$strength <- renderText({
    input$rollButton
    isolate(paste0('<b>Strength</b>: ', strength))
  })
}
shinyApp(ui = ui, server = server)

1 个答案:

答案 0 :(得分:0)

您无法读取强度变量,因为它是在另一个函数中设置的。您可以创建共享反应值的向量

server = function(input, output) {

  val <- reactiveValues(strength=NULL)

  observe({
    if(input$rollButton > 0) {
      val$strength <- sum(sample(1:6,3,replace=TRUE))
    }
  })
  output$name <- renderText({
    input$rollButton
    isolate(paste0('<b>Name</b>: ', input$char_name))
  })
  output$sex <- renderText({
    input$rollButton
    isolate(paste0('<b>Sex</b>: ', input$char_sex))
  })
  output$strength <- renderText({
    input$rollButton
    isolate(paste0('<b>Strength</b>: ', val$strength))
  })
}
shinyApp(ui = ui, server = server)