【问题标题】:RStudio and Shiny: define a reactiveValues with a ReactiveRStudio 和 Shiny:用 Reactive 定义一个 reactiveValues
【发布时间】:2017-08-03 07:16:55
【问题描述】:

我有一个根据用户输入构建的数据框,选择不同的过滤器。然后我想从这个自定义数据框创建一个条形图,用户可以单击该条形图从图中排除条形图。我基本上遵循了这个例子: https://gallery.shinyapps.io/106-plot-interaction-exclude/

但是,当我尝试用我的响应式定义我的 reactiveValues 值时,我无法定义它并得到一个错误。我怀疑我不能用反应定义反应值,对吗?那我该怎么处理呢?我应该使用reactives 而不是reactiveValues

示例代码:

服务器

server <- function(input, output) {
  df <- reactive({
  input$input1
})

vals2 <- reactive({
   (df())
})
output$Id1 <- renderText({
   vals2()
})

vals <- reactiveValues()
vals$bla <- df()
}

用户界面

library(shiny)
ui <- fluidPage(
  fluidRow(
  column(width= 4,
       textInput(inputId = "input1", label = "Select number of rows", value = "10")
),
   column(width = 12,
       verbatimTextOutput(outputId = "Id1"),
       verbatimTextOutput(outputId = "Id2")
  )
 )
)

【问题讨论】:

    标签: r shiny reactive-programming


    【解决方案1】:

    在函数的开头创建您的 reactiveValues 并使用 NULL 进行初始化

    vals <- reactiveValues(bla = NULL)
    

    然后您可以从observeEvent 内部写入vals$bla,例如按下按钮时。

    您可以从 reactiveValue 中读取,例如以如下形式绘制图表:

    output$myPlot <- renderPlot( some function of values$bla )
    

    编辑更新以添加我的评论,创建一个观察您的 input1 的 observeEvent,当它发生变化时,它将执行 {} 中的代码,该代码将写入您的 reactiveValue。

    observeEvent(input$input1, {
        vals$bla <- input$input1    
    })
    

    【讨论】:

    • 感谢您的回答。我的问题是我想将一个值从反应式分配给反应式Value$bla。我该怎么做?
    • 您想分配的反应值是多少?
    • 在我的例子中,这并没有太大的意义,但说明了我想要做什么。我需要将df() 分配给vals$bla。但是,我不确定这是否可能。
    • 要将一些输入值分配给反应值,请使用输入触发的观察事件。
    猜你喜欢
    • 1970-01-01
    • 2015-05-26
    • 1970-01-01
    • 1970-01-01
    • 2021-11-14
    • 1970-01-01
    • 1970-01-01
    • 2020-07-02
    • 1970-01-01
    相关资源
    最近更新 更多