在server.R中向ui.R发送函数输出时接收NULL

时间:2015-02-18 21:00:42

标签: r

我的服务器.R代码:

rf <- randomForest(mpg ~., data=my_data)

shinyServer( function(input, output) {

    df_list <- reactive ({ c(as.numeric(input$inputA), as.numeric(input$inputB), as.numeric(input$inputC), as.numeric(input$inputD)) })

    df <- reactive ({ as.data.frame(df_list) })  

    reactive ({ colnames(df) <- c("A", "B", "C", "D") })

    prediction <- reactive({ predict(rf, df) })

    result <- reactive({as.numeric(prediction)})

    output$predictE <- reactive ({result})

    })

我的ui.R代码:

library(shiny)

shinyUI(pageWithSidebar (
    headerPanel("Prediction"),
    sidebarPanel(
        numericInput(inputId="inputA", label = "", value = 1.0),
        numericInput(inputId="inputB", label = "", value = 1.0),
        numericInput(inputId="inputC", label = "", value = 1.0),
        numericInput(inputId="inputD", label = "", value= 1.0),
        submitButton("Submit")

      ),
    mainPanel(
      p('Output'),
      textOutput('predictE')
    )  
    ) )

我正在尝试从ui.R中获取一些值并使用它们来生成基于RF模型的预测,并将输出发回。

我可以将输入$ inputA发送回ui.R,没问题,因为我测试了输出$ predictE&lt; - reactive({input $ inputA})。但是如果我使用我的RF模型生成预测,我会收到一个NULL。

如果我在shinyServer函数内执行R命令行中的步骤,预测会产生预期的结果。

不确定我哪里出错了。

1 个答案:

答案 0 :(得分:3)

看起来你并没有真正掌握reactive是什么。我建议你关注tutorial。但是,这里似乎你不需要任何反应,而你需要以某种方式呈现你的输出。试试这个:

rf <- randomForest(mpg ~., data=my_data)
shinyServer( function(input, output) {

output$predictE <- renderText({
  df_list <-c(as.numeric(input$inputA), as.numeric(input$inputB), as.numeric(input$inputC), as.numeric(input$inputD))
  df <- as.data.frame(df_list) 
  colnames(df) <- c("A", "B", "C", "D")
  prediction <- predict(rf, df)
  result <- as.numeric(prediction)
  result
})
})