library(shiny)
library(frailtypack)
data("readmission", package = "frailtypack")
ui <- fluidPage(
sidebarPanel(
sliderInput("nb",
h5("Number of time intervals :"),
min = 1,
max = 20,
value = 10)),
mainPanel(
verbatimTextOutput("mod"))
)
server <- function(input, output) {
output$mod <- renderPrint({
model <-frailtyPenal(Surv(time,event)~cluster(id)+ sex + dukes, data=readmission,
hazard = "Piecewise-per", nb.int = input$nb)
print(model)
})
}
shinyApp(ui, server)
嗨,上面的代码将我发回作为nb.int必须为数字的错误。输入$ nb是一个数字。 我不明白为什么。
答案 0 :(得分:0)
错误消息非常自我解释。 input$nb
属于integer
类(int
),但frailtyPenal
需要numeric
(double
)。您可以使用as.numeric
转换它。
大多数R函数在内部在类型之间进行转换,因此您可能不会经常看到这一点,但偶尔会对函数的输入参数有非常严格的要求。
library(shiny)
library(frailtypack)
data("readmission", package = "frailtypack")
ui <- fluidPage(
sidebarPanel(
sliderInput("nb",
h5("Number of time intervals :"),
min = 1,
max = 20,
value = 10)),
mainPanel(
verbatimTextOutput("mod"))
)
server <- function(input, output) {
output$mod <- renderPrint({
message("start render")
message(input$nb)
message(class(input$nb))
model <-frailtyPenal(Surv(time,event)~cluster(id)+ sex + dukes, data=readmission,
hazard = "Piecewise-per", nb.int = as.numeric(input$nb))
print(model)
})
}
shinyApp(ui, server)