SHINY:如何更新reactiveValues对象? [英] shiny: How to update a reactiveValues object?
本文介绍了SHINY:如何更新reactiveValues对象?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
对于此任务,将由reactiveValues对象形式的命名列表listN <- reactiveValues()
负责存储这些信息。
添加项目的功能非常有用,但当我尝试从listN
中删除项目时,其项目名称将永远存在!
我的策略是利用reactiveValuesToList()
,操作其项,并用reactiveValues()
(或do.call(reactiveValues, listN_as_list)
)的全新实例替换listN
。
我在Gist存储了一个可重现的应用程序。我希望这足以让你们帮我摆脱困境。如果需要,请坚持更多澄清。
URL:
gist.github.com/d43e72959c4576d27535
要在控制台上运行的代码:
shiny::runGist('d43e72959c4576d27535')
提前感谢!
推荐答案
的应答是的,您不能像那样替换整个reactiveValues实例 并期望与以前的反应值绑定的任何内容 实例可以立即了解新的。上的插槽 reactiveValues实例本身是反应性的,但它自己的变量是反应性的 不是。 我认为这里真正的问题是,与列表和环境不同,您不能 从reactiveValues中删除值,仅将其设置为NULL。我可以想到两个简单的解决方法:
1)除了reactiveValues
实例的槽是反应性的之外,还将变量 反应性,使用make ReactiveBinding。 2)您还可以使用reactiveValues 和正常一样,但是在reactiveValues中保留一个列表,该列表保存 组合,而不是让reactiveValues本身保存值。在……里面 换句话说,values <- reactiveValues(combos = list())
以及何时 添加了一些新内容,values$combos[[x]] <- y
。 在尝试修复时 在上面的数字1中,我发现当选项是长度为0的向量时,updateSelectInput不能正常工作。而不是将长度为0的向量发送到 客户端,它根本不发送任何可供选择的内容,所以 选择从不更改。 我总结了您的要点并添加了两个版本:一个实现了 解决方法#1(以及我发现的其他一些问题),以及 使用renderUI解决updateSelectInput问题。 https://gist.github.com/jcheng5/eaedfed5095d37217fca/revisions
这篇关于SHINY:如何更新reactiveValues对象?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文