【问题标题】:R shiny - error : must be a numericR闪亮-错误:必须是数字
【发布时间】:2018-04-19 15:37:55
【问题描述】:
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 必须是数字的错误返回给我。虽然 input$nb 是一个数字。 我不明白为什么。

【问题讨论】:

    标签: r shiny


    【解决方案1】:

    错误消息是不言自明的。 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)
    

    【讨论】:

      猜你喜欢
      • 2021-01-17
      • 2014-08-30
      • 1970-01-01
      • 1970-01-01
      • 2023-04-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多