R Shiny:在模型中使用输入

时间:2018-08-21 16:55:59

标签: r shiny

在下面的玩具示例中,我拟合了模型。然后,我尝试使用它进行预测。我的问题是,尽管使用变量input$group可以很好地拟合模型,但是使用相同模型的预测函数无法识别此输入。

  

错误消息:警告:获取错误:找不到“输入”对象

library(shiny)
library(frailtypack)
data("readmission", package = "frailtypack")

ui <- fluidPage(
  titlePanel("prediction"),

  sidebarPanel(


wellPanel(
    selectInput("time",
      label = h5("Time :"),
      choices = names(readmission)),

    selectInput("cens_ind",
      label = h5("Censoring indicator :"),
      choices = names(readmission)),

      selectInput("group",
        label = h5("Cluster :"),
        choices = names(readmission)),


    selectizeInput("co_var",
      label = h5("Co-variables :"),
      choices = names(readmission),
      multiple = TRUE)),


    actionButton("goButton", "Go!")
  ),

  mainPanel(
    verbatimTextOutput("print"),
    plotOutput("pred")
  )
)

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

datapred <- eventReactive(input$goButton,{
  DF = subset(readmission[0,],select = c(input$time,input$cens_ind,input$group,input$co_var))
  DF
})


model <- eventReactive(input$goButton,{
  frailtyPenal(as.formula(paste("Surv(get(input$time),get(input$cens_ind))~cluster(get(input$group)) +", paste(input$co_var, collapse = " + "))),
  data=readmission,n.knots=10,kappa=10000)
})

predict <- reactive({
    datapred <- datapred()

     prediction(model(),datapred,t=100,window=seq(50,1900,50))

})
output$print <- renderPrint({
  print(model())
})

output$pred <- renderPlot({
    predict <- predict()
    if (!is.null(predict)) plot(predict)
  })
}
shinyApp(ui = ui, server = server)

要测试代码,请选择以下设置:时间->时间,审查器指示器->事件,群集-> id和协变量->公爵。

1 个答案:

答案 0 :(得分:0)

尝试导入库(rlang),并在您的子集函数中使用以下替换内容:

!!rlang::sym(input$group)