用于循环产生多个反应值

时间:2016-10-26 06:14:03

标签: r shiny shiny-server

我正在尝试使用for循环生成多个反应变量(#12)。变量的初始值由应用程序中的用户输入指示。因此,变量必须是反应性的并且与用户输入相关。在循环中我想简单地在每次循环运行时添加一个...(有点像计数器)。

应用程序更复杂,但我只需要知道如何将循环和无功值一起使用。因此,上面的示例只是学习语法和结构的简化版本

请注意,以下代码无法运行!我只是把它包括在内,以显示我希望应用程序看起来像......或者我认为它应该是这样的!

非常感谢你的帮助!

ui <- fluidPage(
  numericInput("initial", "Enter the initial value here", value = 0),
  verbatimTextOutput("text1")
  verbatimTextOutput("text2")
)

server <- function(input, output, session) {
  counter <- reactiveValues (
    count1 = input$initial,
    count2 = input$initial
  )

  for (i in 1:10) {
    counter$count1 <- counter$count1 + 1
    counter$count2 <- counter$count2 + 2
  }

  output$text1 <- renderPrint(counter$count1)
  output$text2 <- renderPrint(counter$count2)
}

shinyApp(ui = ui, server = server)

1 个答案:

答案 0 :(得分:0)

您的for循环不会生成多个被动值,它只会更新counter中的值。如果您需要在for循环中向counter添加更多元素,可以使用双方括号[[]]运算符执行此操作。类似的东西:

for (i in 1:10) {
  counter$[[paste0("count",i)]] <- i
}