SHINY:如何更新reactiveValues对象? [英] shiny: How to update a reactiveValues object?

查看:15
本文介绍了SHINY:如何更新reactiveValues对象?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一对辅助输入,允许用户从一组选择中选择组合。此外,能够删除以前创建的项目也很方便。

对于此任务,将由reactiveValues对象形式的命名列表listN <- reactiveValues()负责存储这些信息。

添加项目的功能非常有用,但当我尝试从listN中删除项目时,其项目名称将永远存在!

我的策略是利用reactiveValuesToList(),操作其项,并用reactiveValues()(或do.call(reactiveValues, listN_as_list))的全新实例替换listN

我在Gist存储了一个可重现的应用程序。我希望这足以让你们帮我摆脱困境。如果需要,请坚持更多澄清。

URL:

gist.github.com/d43e72959c4576d27535

要在控制台上运行的代码:

shiny::runGist('d43e72959c4576d27535')

提前感谢!

推荐答案

郑乔在Shiny Google Groups:

的应答
是的,您不能像那样替换整个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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆