Shiny 使用无功功率过滤输入时出错

Shiny 使用无功功率过滤输入时出错,shiny,Shiny,我发现应用程序的这一部分出错。我不确定这里出了什么问题: data_selected <- reactive({filter(data_prep.miRNA, miRNA %in% input$MicroRNA) }) 示例数据: df.miRNA.cpm <- structure(list(`86` = c(5.57979757386892, 17.0240095264258, 4.28380151026145, 13.0457611762755, 12.55311

我发现应用程序的这一部分出错。我不确定这里出了什么问题:

 data_selected <- reactive({filter(data_prep.miRNA, miRNA %in% input$MicroRNA) })
示例数据:

 df.miRNA.cpm <-     structure(list(`86` = c(5.57979757386892, 17.0240095264258, 4.28380151026145, 
13.0457611762755, 12.5531123449841), `175` = c(5.21619202802748, 
15.2849097474841, 2.46719979911461, 10.879496005461, 9.66416497290915
), `217` = c(5.42796072966512, 17.1413407297933, 5.15230233060323, 
12.2646127361351, 12.1031024927547), `394` = c(-1.1390337316217, 
15.1021660424984, 4.63168157763046, 11.1299079134792, 9.55572588729967
), `444` = c(5.06134249676025, 14.5442494311861, -0.399445049232868, 
7.45775961504073, 9.92629675808998)), row.names = c("hsa_let_7a_3p", 
"hsa_let_7a_5p", "hsa_let_7b_3p", "hsa_let_7b_5p", "hsa_let_7c_5p"
), class = "data.frame")

df.miRNA.cpm$miRNA <- rownames(df.miRNA.cpm)


  ss.survival.shiny.miRNA.miRNA <-   structure(list(ID = c("86", "175", "217", "394", "444"), TimeDiff = c(71.0416666666667, 
601.958333333333, 1130, 1393, 117.041666666667), Status = c(1L, 
1L, 0L, 0L, 1L)), row.names = c(NA, 5L), class = "data.frame")

df.miRNA.cpm这里有一个工作的
服务器
功能。问题在于
ggsurvplot
中的
data
参数缺失:

server <- function(input, output, session) {
  
  data_selected <- reactive({
    filter(data_prep.miRNA, miRNA %in% input$MicroRNA)
  })
  
  output$myplot <- renderPlot({
    fitSurv <-   survfit(Surv(TimeDiff, Status) ~ cut(value,
                                                      quantile(value, probs = c(0, .4, .8)),
                                                      include.lowest=TRUE),
                         data = data_selected())
    
    ggsurvplot(fitSurv, data = data_selected())
    
    
  })
}

非常感谢你!所以数据对象也需要在绘图功能中。很高兴我能提供帮助!调试闪亮的应用程序以查找类似错误的一个好方法是在代码的不同部分使用
browser()
,以查找错误发生的位置。我想知道是否可以将分位数作为selectInput中的滑块?你会如何在survfit中定义它?完整的分位数函数还是仅定义概率?这可能有点困难,因为您需要生成一个序列,我不确定滑块是否是最好的方法。如果你没有找到解决方案,你可以问一个新问题。是的,问题在0-1之间。我还没有找到一个类似的有光泽的,这样做。
 data_prep.miRNA <- df.miRNA.cpm %>% 
tidyr::pivot_longer(-miRNA, names_to = "ID") %>% 
left_join(ss.survival.shiny.miRNA.miRNA)
 > data_prep.miRNA
# A tibble: 153,033 x 5
   miRNA         ID     value TimeDiff Status
   <chr>         <chr>  <dbl>    <dbl>  <int>
 1 hsa_let_7a_3p 86     5.58      71.0      1
 2 hsa_let_7a_3p 175    5.22     602.       1
 3 hsa_let_7a_3p 217    5.43    1130        0
 4 hsa_let_7a_3p 394   -1.14    1393        0
 5 hsa_let_7a_3p 444    5.06     117.       1
 6 hsa_let_7a_3p 618    4.37    1508        0
 7 hsa_let_7a_3p 640    2.46    1409        0
 8 hsa_let_7a_3p 829    0.435    919.       0
 9 hsa_let_7a_3p 851   -1.36     976.       0
10 hsa_let_7a_3p 998    3.87    1196.       0
# … with 153,023 more rows
ui.miRNA <- fluidPage(
  selectInput("MicroRNA", "miRNA", choices = unique(data_prep.miRNA$miRNA)),

  plotOutput("myplot"))

server <- function(input, output, session) {
  
  data_selected <- reactive({
    filter(data_prep.miRNA, miRNA %in% input$MicroRNA)
  })
  
  output$myplot <- renderPlot({
      fitSurv <-   survfit(Surv(TimeDiff, Status) ~ cut(value, quantile(value, probs = c(0, .4, .8)), include.lowest=TRUE),data = data_selected())

    ggsurvplot(fitSurv)
    
    
  })
}

shinyApp(ui.miRNA, server)
server <- function(input, output, session) {
  
  data_selected <- reactive({
    filter(data_prep.miRNA, miRNA %in% input$MicroRNA)
  })
  
  output$myplot <- renderPlot({
    fitSurv <-   survfit(Surv(TimeDiff, Status) ~ cut(value,
                                                      quantile(value, probs = c(0, .4, .8)),
                                                      include.lowest=TRUE),
                         data = data_selected())
    
    ggsurvplot(fitSurv, data = data_selected())
    
    
  })
}
server <- function(input, output, session) {

  data_selected <- reactive({
    req(input$MicroRNA)
    filter(data_prep.miRNA, miRNA %in% input$MicroRNA)
  })

  output$myplot <- renderPlot({
    req(data_selected())
    fitSurv <-   survfit(Surv(TimeDiff, Status) ~ cut(value,
                                                      quantile(value, probs = c(0, .4, .8)),
                                                      include.lowest=TRUE),
                         data = data_selected())

    ggsurvplot(fitSurv, data = data_selected())


  })
}