'反应'指令的2个语法之间的差异

时间:2017-10-02 08:00:23

标签: r shiny

警告:我是R的新手,sniny和co ==>我没有意识到这个问题是否有趣。

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

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

事实上,我没有看到BD()(括号)的含义。

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

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

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