【问题标题】:difference between 2 syntaxes of the 'reactive' instruction“反应式”指令的两种语法之间的区别
【发布时间】:2018-03-13 07:02:12
【问题描述】:

警告:我对 R、sniny 和 co 很陌生 ==> 我不知道这个问题是否有趣。

更新:事实证明这是一个闪亮的问题,而且似乎是一个常见的问题,这并不明显。请阅读所有答案,它们没有解决相同的情况。

我在 DB 中有一个数据库。 DBtoto <- reactive({DB()})DBtoto <- reactive({DB}) 之间有区别吗?如果有,是什么?

事实上,我不明白BD()(带括号)是什么意思。

【问题讨论】:

    标签: r shiny


    【解决方案1】:

    是的,有区别。 DB() 是对名为 DB 的函数的调用。 DB 是函数本身。如果它不是一个函数,那么DB() 没有意义,并且会触发一个运行时错误(除非在某处有另一个对象一个函数)。

    reactive() 是一个Shiny 函数,表示其参数的值可能会随着时间而改变。通常认为函数调用的值会发生变化会更有意义,但函数本身可能会(远程)发生变化。

    【讨论】:

      【解决方案2】:

      我还发现What is “object of type ‘closure’ is not subsettable” error in Shiny? 的第一个答案解决了这个问题。总而言之,在 shiny 中使用 'reactive()' 创建的所有内容都必须称为函数。

      在我的示例中,如果 DB 是响应式的(例如 DB <- reactive(read_DataBase())),则必须用括号引用 DB()。例如,要获取属性“x”,您必须编写BD()$x。在我上面的“DBtoto”示例中,第一个表达式在 DB 本身是反应式的情况下成立。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-05-24
        相关资源
        最近更新 更多