0

在下面的玩具示例中,我有一个数据集 datapred。使用 rhandsontable 将数据集输出到交互式表格。然后我将它隐藏在一个新的 data.frame 中hot_to_r。我的问题是,当我想在我的函数中使用它时prediction(),它会向我发送一条错误消息并且应用程序崩溃。我不明白为什么。

我是法国人,所以我用英文转换了消息:as.name 中的错误:'pairlist' 对象无法自动转换为'symbol' 类型。

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

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

  mainPanel(
  fluidRow(rHandsontableOutput("hot")),
  br(),
  plotOutput("pred")
  )
)

server <- function(input, output) {

newdata <- subset(readmission,select = c("time","event","id","dukes"))

datapred <- newdata[1,]

data <- reactive({
  DF = hot_to_r(input$hot)
  DF
})

model <- frailtyPenal(Surv(time,event)~cluster(id)+dukes,n.knots=10,
                    kappa=10000,data=readmission)

predict <- reactive(
prediction(model, data(),t=200,window=seq(50,1900,50),
                                MC.sample=100))

output$hot <- renderRHandsontable({
    rhandsontable(datapred)
    })

data <- reactive({
      DF = hot_to_r(input$hot)
      DF
})

output$pred <- renderPlot({
plot(predict(),conf.bands=TRUE)
})

}
shinyApp(ui = ui, server = server)
4

1 回答 1

0

您可以像这样简单地评估第data()一个。我还添加了一些检查,以便在初始化期间不会出现其他错误

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

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

  mainPanel(
    fluidRow(rHandsontableOutput("hot")),
    br(),
    plotOutput("pred")
  )
)

server <- function(input, output) {

  newdata <- subset(readmission,select = c("time","event","id","dukes"))
  datapred <- newdata[1,]

  data <- reactive({
    hot <- input$hot
    if (!is.null(hot)) hot_to_r(hot)
  })

  model <- frailtyPenal(Surv(time,event)~cluster(id)+dukes,n.knots=10,
                        kappa=10000,data=readmission)

  predict <- reactive({
    dat <- data()
    if (!is.null(dat)) {
      prediction(model, dat,t=200,window=seq(50,1900,50),
                 MC.sample=100)
    }
  })

  output$hot <- renderRHandsontable({
    rhandsontable(datapred)
  })

  output$pred <- renderPlot({
    pred <- predict()
    if (!is.null(pred)) plot(pred, conf.bands = TRUE)
  })
}
shinyApp(ui = ui, server = server)
于 2018-08-21T11:26:06.120 回答