r - 收听列表中的响应式
问题描述
我正在尝试添加reactives
到列表中并听取他们的意见。我不明白为什么在下面的代码中我没有看到任何输出,dbg1
而它在dgb2
.
唯一的区别是,l2
将包含一个reactive
on startup,而l1
仅在第一次按下按钮之后,其他方面都相同。
对此有何解释?
library(shiny)
library(purrr)
ui <- fluidPage(
actionButton("add1", "Add to List 1"),
actionButton("add2", "Add to List 2"),
actionButton("rnd", "Generate Random"),
verbatimTextOutput("dbg1"),
verbatimTextOutput("dbg2"))
server <- function(input, output, session) {
l1 <- l2 <- list()
observeEvent(input$add1, {
l1 <<- c(l1, reactive({
input$rnd
sample(100, 1)
}))
})
observeEvent(input$add2, {
l2 <<- c(l2, reactive({
input$rnd
sample(100, 1)
}))
}, ignoreNULL = FALSE)
output$dbg1 <- renderPrint(map(l1, ~ .x()))
output$dbg2 <- renderPrint(map(l2, ~ .x()))
}
shinyApp(ui, server)
阅读@stefan 的答案和@starja 的评论后,我想更准确地呈现这个问题。
目标
我想要一个动态容器reactives
。也就是说,一个动态创建的数量reactives
,它根据一些输入来做他们的事情。
问题
我认为在我的代码中renderPrint
fordbg1
仅在启动时调用。它意识到没有reactive
上下文(确实是后来才添加的),因此永远不会回忆它。在这种情况下,dbg1
它至少看到一个反应,因此回来了。所以我想我必须自己做出l1
反应(正如@stefan所指出的)
解决方案
不确定您最终要达到的目标。但是在这篇文章之后,您可以更新您的列表并通过以下方式打印它们reactiveVal
:
library(shiny)
library(purrr)
ui <- fluidPage(
actionButton("add1", "Add to List 1"),
actionButton("add2", "Add to List 2"),
actionButton("rnd", "Generate Random"),
verbatimTextOutput("dbg1"),
verbatimTextOutput("dbg2"))
server <- function(input, output, session) {
l1 <- reactiveVal(value = list())
l2 <- reactiveVal(value = list())
rnd <- eventReactive(input$rnd, {
sample(100, 1)
})
observeEvent(input$add1, {
old_value <- l1()
l1(c(old_value, rnd()))
})
observeEvent(input$add2, {
old_value <- l2()
l2(c(old_value, rnd()))
})
output$dbg1 <- renderPrint(l1())
output$dbg2 <- renderPrint(l2())
}
shinyApp(ui, server)
推荐阅读
- python-3.x - python中的object.attribute语法是否算作名称?
- sas - 函数 LAG 中的动态 n
(变量)SAS_part2 - python - subprocess.Popen 不断询问 ssh-copy-id 命令的密码
- c# - 从 Asp.Net Core 2.1 Web 应用程序的 SQL 迁移中的 Db 更新中的 NOT 关键字错误
- javascript - 得到错误 SyntaxError: expected expression, got '}' in Firefox
- java - Apache tomcat 和 servlet(初学者) - 404 错误,可能找不到类?
- elasticsearch - 如何进行正确的查询以按 ID 选择,然后使用弹性搜索进行更新?
- azure-functions - 如何在本地运行 Azure 函数时获取日志?
- node.js - 需要从数组productid[]中删除元素,该元素是mongodb集合用户的一个元素
- hugo - Hugo 为内容部分生成 URL。我该如何阻止它?