我的服务器.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命令行中的步骤,预测会产生预期的结果。
不确定我哪里出错了。
答案 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
})
})