定义要绘制的变量的函数
Function to define variable to plot
我想通过定义为 output$myplot1
、 output$myplot2
等的几个绘图函数制作多个绘图,这些绘图目前在参数 selectInput
中定义,例如 p1
是 Bone_disease。但是,我想使用 selectInput
之外的另一个函数来定义要为 myplot1 和 myplot2 绘制哪些参数,因为我不希望它显示在侧边栏中。
如何将此行替换为定义要绘制的临床参数的类似行,但不要在侧边栏中显示它:selectInput("p1", "Clinical parameter", choices = c("Serum_M_component"))
我想在边栏中显示的唯一参数是 MicroRNA
。
!更新了示例输入数据。
data_prep <- structure(list(miRNA = c("hsa-let-7a-3p", "hsa-let-7a-3p", "hsa-let-7a-3p"
), ID = c("86", "175", "217"), value = c(5.57979757386892, 5.21619202802748,
5.42796072966512), Serum_M_component = c("IgG", "IgG", "Unknown"
), ISS_stage = c("Stage 3", "Stage 1", "Stage 3"), del17 = c("Poor Sample",
"No", "No"), t4_14 = c("Poor Sample", "No", "Yes"), Bone_disease = c("No",
"Yes", "Yes")), row.names = c(NA, 3L), class = "data.frame")
ui.miRNA.clinical <- dashboardPage(
# Application title
dashboardHeader(title=h4(HTML("MicroRNA expression <br/> in Multiple myeloma"))),
dashboardSidebar(
selectInput("gene", "MicroRNA", choices = unique(data_prep$miRNA)),
selectInput("p1", "Clinical parameter", choices = c("Bone_disease"),),
selectInput("p2", "Clinical parameter", choices = c("Serum_M_component")),
selectInput("p3", "Clinical parameter", choices = c("ISS_stage")),
selectInput("p4", "Clinical parameter", choices = c("del17")),
selectInput("p5", "Clinical parameter", choices = c("t4_14"))),
dashboardBody(
tabsetPanel(
tabPanel("Plot Bone_disease", plotOutput("myplot1", width = "400px", height = "300px")),
tabPanel("Plot Serum_M_component", plotOutput("myplot2", width = "400px", height = "300px")),
tabPanel("Plot ISS_stage", plotOutput("myplot3", width = "400px", height = "300px")),
tabPanel("Plot del17", plotOutput("myplot4", width = "400px", height = "300px")),
tabPanel("Plot t4_14", plotOutput("myplot5", width = "400px", height = "300px"))
)
)
)
server.miRNA.clinical <- function(input, output, session) {
# filter data by Gene
data_selected <- reactive({
filter(data_prep, miRNA %in% input$gene)
})
# Plot. use aes_string to simply use character input p
#my_comparisons <- list( c("Yes", "No"), c("Stage 1", "Stage 3"))
output$myplot1 <- renderPlot({
ggplot(data_selected(), aes_string(input$p1, "value", fill = input$p1)) +
geom_boxplot() + theme_classic(base_size = 12) + labs(x="Clinical parameter",y="MicroRNA expression (cpm,log2)") +
stat_compare_means(method = "wilcox.test")
#method ="anova"
})
output$myplot2 <- renderPlot({
ggplot(data_selected(), aes_string(input$p2, "value", fill = input$p2)) +
geom_boxplot() + theme_classic(base_size = 12) + labs(x="Clinical parameter",y="MicroRNA expression (cpm,log2)") +
stat_compare_means(method = "anova")
#method ="anova"
})
output$myplot3 <- renderPlot({
ggplot(data_selected(), aes_string(input$p3, "value", fill = input$p3)) +
geom_boxplot() + theme_classic(base_size = 12) + labs(x="Clinical parameter",y="MicroRNA expression (cpm,log2)") +
stat_compare_means(method = "anova")
#method ="anova"
})
output$myplot4 <- renderPlot({
ggplot(data_selected(), aes_string(input$p4, "value", fill = input$p4)) +
geom_boxplot() + theme_classic(base_size = 12) + labs(x="Clinical parameter",y="MicroRNA expression (cpm,log2)") +
stat_compare_means(method = "anova")
#method ="anova"
})
output$myplot5 <- renderPlot({
ggplot(data_selected(), aes_string(input$p5, "value", fill = input$p5)) +
geom_boxplot() + theme_classic(base_size = 12) + labs(x="Clinical parameter",y="MicroRNA expression (cpm,log2)") +
stat_compare_means(method = "anova")
#method ="anova"
})
}
shinyApp(ui.miRNA.clinical, server.miRNA.clinical)
一种方法是使用 shinyjs
包的 hidden
选项。试试这个
"Yes", "Yes")), row.names = c(NA, 3L), class = "data.frame")
library(shinyjs)
ui.miRNA.clinical <- dashboardPage(
# Application title
dashboardHeader(title=h4(HTML("MicroRNA expression <br/> in Multiple myeloma"))),
dashboardSidebar(
useShinyjs(),
selectInput("gene", "MicroRNA", choices = unique(data_prep$miRNA)),
shinyjs::hidden(
selectInput("p1", "Clinical parameter", choices = c("Bone_disease"),),
selectInput("p2", "Clinical parameter", choices = c("Serum_M_component")),
selectInput("p3", "Clinical parameter", choices = c("ISS_stage")),
selectInput("p4", "Clinical parameter", choices = c("del17")),
selectInput("p5", "Clinical parameter", choices = c("t4_14"))
)
),
dashboardBody(
tabsetPanel(
tabPanel("Plot Bone_disease", plotOutput("myplot1", width = "400px", height = "300px")),
tabPanel("Plot Serum_M_component", plotOutput("myplot2", width = "400px", height = "300px")),
tabPanel("Plot ISS_stage", plotOutput("myplot3", width = "400px", height = "300px")),
tabPanel("Plot del17", plotOutput("myplot4", width = "400px", height = "300px")),
tabPanel("Plot t4_14", plotOutput("myplot5", width = "400px", height = "300px"))
)
)
)
server.miRNA.clinical <- function(input, output, session) {
# filter data by Gene
data_selected <- reactive({
filter(data_prep, miRNA %in% input$gene)
})
# Plot. use aes_string to simply use character input p
#my_comparisons <- list( c("Yes", "No"), c("Stage 1", "Stage 3"))
output$myplot1 <- renderPlot({
ggplot(data_selected(), aes_string(input$p1, "value", fill = input$p1)) +
geom_boxplot() + theme_classic(base_size = 12) + labs(x="Clinical parameter",y="MicroRNA expression (cpm,log2)") +
stat_compare_means(method = "wilcox.test")
#method ="anova"
})
output$myplot2 <- renderPlot({
ggplot(data_selected(), aes_string(input$p2, "value", fill = input$p2)) +
geom_boxplot() + theme_classic(base_size = 12) + labs(x="Clinical parameter",y="MicroRNA expression (cpm,log2)") +
stat_compare_means(method = "anova")
#method ="anova"
})
output$myplot3 <- renderPlot({
ggplot(data_selected(), aes_string(input$p3, "value", fill = input$p3)) +
geom_boxplot() + theme_classic(base_size = 12) + labs(x="Clinical parameter",y="MicroRNA expression (cpm,log2)") +
stat_compare_means(method = "anova")
#method ="anova"
})
output$myplot4 <- renderPlot({
ggplot(data_selected(), aes_string(input$p4, "value", fill = input$p4)) +
geom_boxplot() + theme_classic(base_size = 12) + labs(x="Clinical parameter",y="MicroRNA expression (cpm,log2)") +
stat_compare_means(method = "anova")
#method ="anova"
})
output$myplot5 <- renderPlot({
ggplot(data_selected(), aes_string(input$p5, "value", fill = input$p5)) +
geom_boxplot() + theme_classic(base_size = 12) + labs(x="Clinical parameter",y="MicroRNA expression (cpm,log2)") +
stat_compare_means(method = "anova")
#method ="anova"
})
}
shinyApp(ui.miRNA.clinical, server.miRNA.clinical)
我想通过定义为 output$myplot1
、 output$myplot2
等的几个绘图函数制作多个绘图,这些绘图目前在参数 selectInput
中定义,例如 p1
是 Bone_disease。但是,我想使用 selectInput
之外的另一个函数来定义要为 myplot1 和 myplot2 绘制哪些参数,因为我不希望它显示在侧边栏中。
如何将此行替换为定义要绘制的临床参数的类似行,但不要在侧边栏中显示它:selectInput("p1", "Clinical parameter", choices = c("Serum_M_component"))
我想在边栏中显示的唯一参数是 MicroRNA
。
!更新了示例输入数据。
data_prep <- structure(list(miRNA = c("hsa-let-7a-3p", "hsa-let-7a-3p", "hsa-let-7a-3p"
), ID = c("86", "175", "217"), value = c(5.57979757386892, 5.21619202802748,
5.42796072966512), Serum_M_component = c("IgG", "IgG", "Unknown"
), ISS_stage = c("Stage 3", "Stage 1", "Stage 3"), del17 = c("Poor Sample",
"No", "No"), t4_14 = c("Poor Sample", "No", "Yes"), Bone_disease = c("No",
"Yes", "Yes")), row.names = c(NA, 3L), class = "data.frame")
ui.miRNA.clinical <- dashboardPage(
# Application title
dashboardHeader(title=h4(HTML("MicroRNA expression <br/> in Multiple myeloma"))),
dashboardSidebar(
selectInput("gene", "MicroRNA", choices = unique(data_prep$miRNA)),
selectInput("p1", "Clinical parameter", choices = c("Bone_disease"),),
selectInput("p2", "Clinical parameter", choices = c("Serum_M_component")),
selectInput("p3", "Clinical parameter", choices = c("ISS_stage")),
selectInput("p4", "Clinical parameter", choices = c("del17")),
selectInput("p5", "Clinical parameter", choices = c("t4_14"))),
dashboardBody(
tabsetPanel(
tabPanel("Plot Bone_disease", plotOutput("myplot1", width = "400px", height = "300px")),
tabPanel("Plot Serum_M_component", plotOutput("myplot2", width = "400px", height = "300px")),
tabPanel("Plot ISS_stage", plotOutput("myplot3", width = "400px", height = "300px")),
tabPanel("Plot del17", plotOutput("myplot4", width = "400px", height = "300px")),
tabPanel("Plot t4_14", plotOutput("myplot5", width = "400px", height = "300px"))
)
)
)
server.miRNA.clinical <- function(input, output, session) {
# filter data by Gene
data_selected <- reactive({
filter(data_prep, miRNA %in% input$gene)
})
# Plot. use aes_string to simply use character input p
#my_comparisons <- list( c("Yes", "No"), c("Stage 1", "Stage 3"))
output$myplot1 <- renderPlot({
ggplot(data_selected(), aes_string(input$p1, "value", fill = input$p1)) +
geom_boxplot() + theme_classic(base_size = 12) + labs(x="Clinical parameter",y="MicroRNA expression (cpm,log2)") +
stat_compare_means(method = "wilcox.test")
#method ="anova"
})
output$myplot2 <- renderPlot({
ggplot(data_selected(), aes_string(input$p2, "value", fill = input$p2)) +
geom_boxplot() + theme_classic(base_size = 12) + labs(x="Clinical parameter",y="MicroRNA expression (cpm,log2)") +
stat_compare_means(method = "anova")
#method ="anova"
})
output$myplot3 <- renderPlot({
ggplot(data_selected(), aes_string(input$p3, "value", fill = input$p3)) +
geom_boxplot() + theme_classic(base_size = 12) + labs(x="Clinical parameter",y="MicroRNA expression (cpm,log2)") +
stat_compare_means(method = "anova")
#method ="anova"
})
output$myplot4 <- renderPlot({
ggplot(data_selected(), aes_string(input$p4, "value", fill = input$p4)) +
geom_boxplot() + theme_classic(base_size = 12) + labs(x="Clinical parameter",y="MicroRNA expression (cpm,log2)") +
stat_compare_means(method = "anova")
#method ="anova"
})
output$myplot5 <- renderPlot({
ggplot(data_selected(), aes_string(input$p5, "value", fill = input$p5)) +
geom_boxplot() + theme_classic(base_size = 12) + labs(x="Clinical parameter",y="MicroRNA expression (cpm,log2)") +
stat_compare_means(method = "anova")
#method ="anova"
})
}
shinyApp(ui.miRNA.clinical, server.miRNA.clinical)
一种方法是使用 shinyjs
包的 hidden
选项。试试这个
"Yes", "Yes")), row.names = c(NA, 3L), class = "data.frame")
library(shinyjs)
ui.miRNA.clinical <- dashboardPage(
# Application title
dashboardHeader(title=h4(HTML("MicroRNA expression <br/> in Multiple myeloma"))),
dashboardSidebar(
useShinyjs(),
selectInput("gene", "MicroRNA", choices = unique(data_prep$miRNA)),
shinyjs::hidden(
selectInput("p1", "Clinical parameter", choices = c("Bone_disease"),),
selectInput("p2", "Clinical parameter", choices = c("Serum_M_component")),
selectInput("p3", "Clinical parameter", choices = c("ISS_stage")),
selectInput("p4", "Clinical parameter", choices = c("del17")),
selectInput("p5", "Clinical parameter", choices = c("t4_14"))
)
),
dashboardBody(
tabsetPanel(
tabPanel("Plot Bone_disease", plotOutput("myplot1", width = "400px", height = "300px")),
tabPanel("Plot Serum_M_component", plotOutput("myplot2", width = "400px", height = "300px")),
tabPanel("Plot ISS_stage", plotOutput("myplot3", width = "400px", height = "300px")),
tabPanel("Plot del17", plotOutput("myplot4", width = "400px", height = "300px")),
tabPanel("Plot t4_14", plotOutput("myplot5", width = "400px", height = "300px"))
)
)
)
server.miRNA.clinical <- function(input, output, session) {
# filter data by Gene
data_selected <- reactive({
filter(data_prep, miRNA %in% input$gene)
})
# Plot. use aes_string to simply use character input p
#my_comparisons <- list( c("Yes", "No"), c("Stage 1", "Stage 3"))
output$myplot1 <- renderPlot({
ggplot(data_selected(), aes_string(input$p1, "value", fill = input$p1)) +
geom_boxplot() + theme_classic(base_size = 12) + labs(x="Clinical parameter",y="MicroRNA expression (cpm,log2)") +
stat_compare_means(method = "wilcox.test")
#method ="anova"
})
output$myplot2 <- renderPlot({
ggplot(data_selected(), aes_string(input$p2, "value", fill = input$p2)) +
geom_boxplot() + theme_classic(base_size = 12) + labs(x="Clinical parameter",y="MicroRNA expression (cpm,log2)") +
stat_compare_means(method = "anova")
#method ="anova"
})
output$myplot3 <- renderPlot({
ggplot(data_selected(), aes_string(input$p3, "value", fill = input$p3)) +
geom_boxplot() + theme_classic(base_size = 12) + labs(x="Clinical parameter",y="MicroRNA expression (cpm,log2)") +
stat_compare_means(method = "anova")
#method ="anova"
})
output$myplot4 <- renderPlot({
ggplot(data_selected(), aes_string(input$p4, "value", fill = input$p4)) +
geom_boxplot() + theme_classic(base_size = 12) + labs(x="Clinical parameter",y="MicroRNA expression (cpm,log2)") +
stat_compare_means(method = "anova")
#method ="anova"
})
output$myplot5 <- renderPlot({
ggplot(data_selected(), aes_string(input$p5, "value", fill = input$p5)) +
geom_boxplot() + theme_classic(base_size = 12) + labs(x="Clinical parameter",y="MicroRNA expression (cpm,log2)") +
stat_compare_means(method = "anova")
#method ="anova"
})
}
shinyApp(ui.miRNA.clinical, server.miRNA.clinical)