Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 将分位数选择设置为滑块_R_Shiny_Slider - Fatal编程技术网

R 将分位数选择设置为滑块

R 将分位数选择设置为滑块,r,shiny,slider,R,Shiny,Slider,我想知道是否有可能将下面我的survfit函数中的分位数(value,probs=c(0.4.8))变成一个从0到1的滑块。滑块必须控制分位数的第一部分和最后一部分(在我的示例中为0.4和0.8部分),因此它可能必须是两个单独的滑块 我尝试了这个,但得到的错误是找不到输入 dashboardBody( sliderInput("obs1", "LowQuantile", min = 0, max = 1, val

我想知道是否有可能将下面我的
survfit
函数中的
分位数(value,probs=c(0.4.8))
变成一个从0到1的滑块。滑块必须控制分位数的第一部分和最后一部分(在我的示例中为0.4和0.8部分),因此它可能必须是两个单独的滑块

我尝试了这个,但得到的错误是
找不到输入

  dashboardBody(
    sliderInput("obs1", "LowQuantile",
                min = 0, max = 1, value = 0.1
    ),
    sliderInput("obs2", "HighQuantile",
                min = 0, max = 1, value = 0.1
    )


fitSurv <-   survfit(Surv(TimeDiff, Status) ~ cut(value,
                                                      quantile(value, probs = c(0, input$obs1,input$obs2)),
                                                      include.lowest=TRUE),
                         data = data_selected())
示例数据:

 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这里的核心问题是
ggsurvfit
调用的函数之一的范围问题。深入嵌套在函数调用中,
stats::get_all_vars
被调用。此函数不知何故导致了范围问题,并且它找不到用于上/下分位数的变量,因为它们不包含在作为
数据
参数的输入提供的数据帧中。但是,
stats::get_all_vars
接受环境而不是数据帧。因此,我的技巧不是传递数据帧,而是传递
ggsurvfit
data
参数中的环境。然后,环境包含用于构建模型的数据帧中的所有所需变量以及分位数的变量。我觉得这不是一个最佳的解决方案,我很高兴能找到更好的解决方案

此外,我只使用一个滑块来选择分位数的值:

library(dplyr) 
require(survminer)
library(tidyverse)
require(reshape2)
library(shiny)
library(tidyr)
require(survival)

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")
data_prep.miRNA <- df.miRNA.cpm %>% 
  tidyr::pivot_longer(-miRNA, names_to = "ID") %>% 
  left_join(ss.survival.shiny.miRNA.miRNA)

ui.miRNA <- fluidPage(
  selectInput("MicroRNA", "miRNA", choices = unique(data_prep.miRNA$miRNA)),
  sliderInput("obs", "Quantiles",
              min = 0, max = 1, value = c(0.4, 0.8)
  ),
  
  plotOutput("myplot"))

server <- function(input, output, session) {
  
  data_selected <- reactive({
    filter(data_prep.miRNA, miRNA %in% input$MicroRNA)
  })
  
  output$myplot <- renderPlot({
    lower_value <- input$obs[1]
    upper_value <- input$obs[2]
    fitSurv <-   survfit(Surv(TimeDiff, Status) ~ cut(value, quantile(value, probs = c(0, lower_value, upper_value)), include.lowest=TRUE),data = data_selected())
    
    new_env <- environment()
    new_env$value <- data_selected()$value
    new_env$TimeDiff <- data_selected()$TimeDiff
    new_env$Status <- data_selected()$Status
    new_env$lower_value <- lower_value
    new_env$upper_value <- upper_value
    ggsurvplot(fitSurv, new_env)
    
    
  })
}

shinyApp(ui.miRNA, server)
库(dplyr)
要求(survminer)
图书馆(tidyverse)
要求(2)
图书馆(闪亮)
图书馆(tidyr)
需要(生存)

df.miRNA.cpm如果您只想控制2个值,那么如果您为
value
参数提供了2个值(请参阅),但输入出错,则可以使用
sliderInput
作为范围滑块。请参阅更新
 data_prep.miRNA <- df.miRNA.cpm %>% 
tidyr::pivot_longer(-miRNA, names_to = "ID") %>% 
left_join(ss.survival.shiny.miRNA.miRNA)
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,data_selected ())
    
    
  })
}

shinyApp(ui.miRNA, server)
library(dplyr) 
require(survminer)
library(tidyverse)
require(reshape2)
library(shiny)
library(tidyr)
require(survival)

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")
data_prep.miRNA <- df.miRNA.cpm %>% 
  tidyr::pivot_longer(-miRNA, names_to = "ID") %>% 
  left_join(ss.survival.shiny.miRNA.miRNA)

ui.miRNA <- fluidPage(
  selectInput("MicroRNA", "miRNA", choices = unique(data_prep.miRNA$miRNA)),
  sliderInput("obs", "Quantiles",
              min = 0, max = 1, value = c(0.4, 0.8)
  ),
  
  plotOutput("myplot"))

server <- function(input, output, session) {
  
  data_selected <- reactive({
    filter(data_prep.miRNA, miRNA %in% input$MicroRNA)
  })
  
  output$myplot <- renderPlot({
    lower_value <- input$obs[1]
    upper_value <- input$obs[2]
    fitSurv <-   survfit(Surv(TimeDiff, Status) ~ cut(value, quantile(value, probs = c(0, lower_value, upper_value)), include.lowest=TRUE),data = data_selected())
    
    new_env <- environment()
    new_env$value <- data_selected()$value
    new_env$TimeDiff <- data_selected()$TimeDiff
    new_env$Status <- data_selected()$Status
    new_env$lower_value <- lower_value
    new_env$upper_value <- upper_value
    ggsurvplot(fitSurv, new_env)
    
    
  })
}

shinyApp(ui.miRNA, server)