单击Shiny后呈现数据表

时间:2019-12-14 05:56:56

标签: r shiny

在用户单击预测功能时,我需要帮助弄清楚如何产生一些输出(显示战斗预期结果的数据表)。

我尝试了在线以下几个示例,但似乎并没有得到我想要的动作。不确定我是否可以分享很多可重现的示例,因为预测按钮会接受输入并通过我构建的预测模型运行它。

这是我编写的代码

column(offset=5,width = 8,
           actionButton("gobutton","Predict"),
           dataTableOutput("predictions")),

和服务器功能

observeEvent(input$goButton, {
    output$predictions <- renderDataTable(
      {
        preds3 <- bind_cols(preds,preds2)
        print(cat_model$predict(preds3))
        cat_model$predict(preds3)
      }
    )
  })

当前,如果我在应用中单击“预测”按钮,则什么也不会发生

更新:

 data <- eventReactive(
    input$goButton, {
        preds3 <- bind_cols(preds,preds2)
        print(cat_model$predict(preds3))
        cat_model$predict(preds3)
    }
  )
  output$predictions <- renderDataTable({
    data()
  })

但单击“预测”时仍未获得任何输出 我还尝试将输出包装在eventReactive中的服务器上:

这是cat_model $ predict(preds3)的输出:

            [,1]      [,2]      [,3]
[1,] 8.77947e-06 0.3193044 0.6806869

这是我从dput(cat_model ..)获得的输出:

structure(c(8.77946992728772e-06, 0.31930435971863, 0.680686860811443
), .Dim = c(1L, 3L))

从瞥见:

 num [1, 1:3] 8.78e-06 3.19e-01 6.81e-01

遵循答案之一中的建议:

data <- eventReactive(input$goButton, {
    preds3 <- bind_cols(preds,preds2)
    print(dput(cat_model$predict_proba(preds3)))
    cat_model$predict_proba(preds3)
  })
  output$predictions <- renderDataTable({
    data()
  })

1 个答案:

答案 0 :(得分:1)

我认为eventReactiveobserveEvent更合适。直接使用输出(而不是对cat$model的调用),可以在此处正确显示DT。

library(shiny)
library(DT)

ui <- {
    fluidPage(
        fluidRow(
            actionButton('goButton', 'Predict'),
            DTOutput('predictions')
        )
    )
}

server <- function(input, output, session) {

    data <- eventReactive(input$goButton, {
        structure(c(8.77946992728772e-06, 0.31930435971863, 0.680686860811443
            ), .Dim = c(1L, 3L))
    })

    output$predictions <- renderDT({
        data()
    })

}

shinyApp(ui, server)