【问题标题】:Append a reactive data frame in shiny R在闪亮的 R 中附加一个反应数据框
【发布时间】:2017-04-14 17:30:45
【问题描述】:

我有一个类似这样的代码:

for( #loop starts ....
    temp_data_frame <- reactive(d_frame2()[0,]) #only for if i = 1
    temp_data_frame <- reactive(rbind(temp_data_frame(), d_frame2())) 
    )#for loop ends

subset_dataset <-eventReactive(input$go, {temp_data_frame()})
renderDataTable( subset_dataset(), options = list(pageLength = 15))

在 d_frame2 中,每次运行循环时我都会获取新数据。我正在创建另一个与 d_frame2 具有相同列名的 temp_data_frame,因此附加将很容易。最后,使用 renderDataTable 我正在显示输出。 此代码导致此错误:

evaluation nested too deeply: infinite recursion / options(expressions=)?

我发现这条线:temp_data_frame &lt;- reactive(rbind(temp_data_frame(), d_frame2())) 正在创建错误。如何解决?请帮忙。

【问题讨论】:

    标签: r shiny flexdashboard


    【解决方案1】:

    函数定义中的递归导致许多(无限?)评估。 如果你把这条线一起去掉怎么办?或者重命名第二个函数,所以

        temp_data_frame2 <- reactive(rbind(temp_data_frame(), d_frame2()))
    

    我刚刚遇到了与递归函数类似的问题。

    【讨论】:

    • 已经这样做了,但是如果你这样做了,附加将如何工作?
    • 有趣的是,我不得不使用 for 循环来解决我的问题。为什么你有第一行?
    • 不能用这一行替换两行吗? temp_data_frame &lt;- reactive(rbind(d_frame2()[0,]), d_frame2()))
    • 对于第一个循环它会起作用,但对于第二个循环它只会替换 temp_data_frame 中的值,所以我不能做追加。
    • 我对这种情况有点困惑。用户是否使用闪亮的 UI 手动输入数据框?如果是这样,为什么需要 for 循环?据我所知,每次用户对前端进行更改时,都会执行响应式语句。那么当你用其中的 2 行替换整个 for 循环时它不会运行吗?
    猜你喜欢
    • 2013-12-22
    • 2016-02-10
    • 1970-01-01
    • 2015-03-09
    • 2021-06-21
    • 2017-04-13
    • 2015-03-21
    • 1970-01-01
    相关资源
    最近更新 更多