首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >闪亮错误:找不到对象“data_survival_curve”

闪亮错误:找不到对象“data_survival_curve”
EN

Stack Overflow用户
提问于 2018-03-18 21:55:06
回答 1查看 467关注 0票数 0

我不知道下面的代码有什么问题。运行runApp('script.R')后,我将得到以下错误Error: object 'data_survival_curve' not found。我在RStudio中运行调试,并在nr 60上创建了这个变量,它一直存在到出现错误的时刻。

script.R文件:

代码语言:javascript
复制
library(shiny)
library(survival)
library(survminer)
library(directlabels)

data <- read.csv('dataset.csv', header = TRUE, sep = ",", fileEncoding="UTF-8")
unique_transplant_years_decreasing <- as.numeric(sort(unique(c(data$transplant_year)), decreasing = TRUE))

krivkaPreziti <- sidebarLayout(
  # all inputs for graph survival analysis (krivka preziti)
  sidebarPanel(
    sliderInput("krivka_preziti_input_years", 'Years:', 
                min = unique_transplant_years_decreasing[length(unique_transplant_years_decreasing)],
                max = unique_transplant_years_decreasing[1],
                value = c(unique_transplant_years_decreasing[length(unique_transplant_years_decreasing)],
                          unique_transplant_years_decreasing[1]),
                step = 1),
    numericInput('krivka_preziti_input_seskupit_po', 'Group by (years):',
                 value = 0,
                 min = 0),
    checkboxInput('krivka_preziti_input_facet', 'Facet', value = FALSE),
    width = 3
  ),

  # Create a spot for bar plot
  mainPanel(
    h2('Survival curve'),
    br(),
    plotOutput('krivka_preziti', height = "750px"),
    width = 12
  )
)



panelAnalyzaPreziti <- tabPanel(
  'Survival analysis',
  krivkaPreziti 
)


ui <- navbarPage(
  title = "Application",
  panelAnalyzaPreziti
)


server <- shinyServer(
  function(input, output, session)
  {
    output$krivka_preziti <- renderPlot(
      {
        krivka_year_bottom <- input$krivka_preziti_input_years[1]
        krivka_year_top <- input$krivka_preziti_input_years[2]
        krivka_seskupit_po <- input$krivka_preziti_input_seskupit_po

        # data which fit the range of selected years
        # data which meet the condition that survival_time is not NA
        data_survival_curve <- data[data$transplant_year %in% seq(krivka_year_bottom, krivka_year_top) &
                                      !is.na(data$survival_time) &
                                      data$survival_time >= 0,]


        # if seskupit_po != 0, then cut 
        if(krivka_seskupit_po != 0) {
          data_survival_curve$time_period <- cut(as.numeric(data_survival_curve$transplant_year),
                                                   seq(krivka_year_bottom, krivka_year_top, krivka_seskupit_po),
                                                   include.lowest = T)
          data_survival_curve <- data_survival_curve[!is.na(data_survival_curve$time_period),]
          data_survival_curve$time_period <- as.factor(data_survival_curve$time_period)
        }
        else {
          data_survival_curve$time_period = data_survival_curve$transplant_year
        }

        # validate number of rows of data set > 0
        shiny::validate(
          need(nrow(data_survival_curve) > 0, 'Broader your input')
        )

        surv_obj <- Surv(data_survival_curve$survival_time/365,data_survival_curve$patient_died)
        fit <- survfit(surv_obj ~ time_period, data = data_survival_curve)

        krivka_preziti_plt <- ggsurvplot(fit,
                                         linetype = c('solid'),
                                         ggtheme = theme_bw(),
                                         surv.scale = 'percent',
                                         xlab = 'Years',
                                         ylab = '%',
                                         censor = FALSE,
                                         break.x.by = 1,
                                         break.y.by = 0.1)
        plot2 <- krivka_preziti_plt + geom_dl(aes(label = time_period), method = list("last.points"), cex = 0.8)

        plot2

      }
    )
  }
)

shinyApp(
  ui = ui,
  server = server
)

下面是我使用的数据集:在这里输入链接描述

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-07-21 15:19:58

自从一个小时以来,我一直在为同样的问题而奋斗,终于找到了解决办法!

"ggsurvplot“函数发生了更改,您现在需要指定在"fit”元素中使用的数据集。因此,在您的代码中,您必须添加:

代码语言:javascript
复制
krivka_preziti_plt <- ggsurvplot(fit, data = data_survival_curve,
                                         linetype = c('solid'),
                                         ggtheme = theme_bw(),
                                         surv.scale = 'percent',
                                         xlab = 'Years',
                                         ylab = '%',
                                         censor = FALSE,
                                         break.x.by = 1,
                                         break.y.by = 0.1)

来源:Github号,2018年1月13日

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49353217

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档