【问题标题】:R shiny Handsontable : use dataframe from handsontableR闪亮的Handsontable:使用handsontable中的数据框
【发布时间】:2019-01-27 13:08:21
【问题描述】:

在下面的玩具示例中,我有一个数据集 datapred。使用 rhandsontable 将数据集输出到交互式表格。然后我用hot_to_r 将它隐藏在一个新的data.frame 中。我的问题是,当我想在我的函数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)

【问题讨论】:

    标签: r shiny rhandsontable


    【解决方案1】:

    您可以像这样简单地先评估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)
    

    【讨论】:

      猜你喜欢
      • 2016-11-09
      • 2021-06-21
      • 1970-01-01
      • 1970-01-01
      • 2015-07-14
      • 2014-05-06
      • 2018-10-17
      • 2018-09-26
      • 2018-12-21
      相关资源
      最近更新 更多