尝试在Shiny中的同一图上支付多个选择器输入时出错

时间:2018-11-29 19:11:55

标签: r ggplot2 shiny

我正在尝试使用具有多个= TRUE的selectize输入来绘制具有多个输入的散点图。

基本上,我有一个不同基因的列表,我想使用散点图将它们相互绘制。 我可以选择2个基因并将它们相对绘制,但是我想要做的是选择一个基因在Y轴上绘制,然后选择其他几个基因同时在X轴上绘制并通过a_str = 'hii thherre' e = list(a_str) b_str = "" for i, x in enumerate(e): nextelem = e[(i + 1) % len(e)] if nextelem == x: print("Duplicate found, removing") else: b_str = b_str + x print(b_str) 在同一地块上。目前,以下代码适用于一对基因,但是一旦我选择另一个基因在Y轴上对该基因作图,我就会得到selectizeInput( multiple = TRUE)

我知道应该有一些通过dpylr软件包执行此操作的方法,但是当我尝试执行该操作时,我不知道如何只选择一些选定的列,而不是融化整个表。

下面是我的闪亮代码(仅限于相关部分)和数据表的简化版。

Error: more than one expression parsed

我知道我可以为每种可能性手动创建ggplot行,如果我只是想显示固定数量的短输入,这是可行的,但是当我想一次选择多个输入时,这是可行的。

> Short_cortex5
                         Names MARC1 MARC2 MARCH1  SEPT1    DEC1 MARCH2  SEPT2
    1 GTEX-1117F-3226-SM-5N9CT 4.459 15.30  2.501 1.0680 0.02610  81.15  66.14
    2 GTEX-111FC-3126-SM-5GZZ2 6.902 16.07  4.700 0.2980 0.00000  68.90  88.95
    3 GTEX-1128S-2726-SM-5H12C 5.361 17.27  2.462 0.3812 0.00000  63.41  65.20
    4 GTEX-117XS-3026-SM-5N9CA 4.792 11.37  3.107 0.5550 0.02261  84.53  48.98
    5 GTEX-1192X-3126-SM-5N9BY 5.772 21.76  6.123 0.7558 0.00000  88.49 106.20
    6 GTEX-11DXW-1126-SM-5H12Q 5.143 15.55  4.239 0.5859 0.03581  58.91  69.80
    7 GTEX-11DXY-3226-SM-5GIDE 3.856 16.74  4.596 0.6551 0.02627  70.38  68.50
    8 GTEX-11EI6-3026-SM-5GZZO 6.386 11.48  2.167 0.3567 0.01090  60.14  74.04


library(shiny)
library(ggplot2)
#TPM5
GeneNames <- colnames(Short_cortex5[2:ncol(Short_cortex5)])
# Define UI for application
ui <- fluidPage(

  # Application title
  titlePanel("Cell specific gene expression enrichment"),

  # Sidebar 
  sidebarLayout(
    sidebarPanel(
      selectizeInput(inputId = "gene_X",
                     label = "Select gene X:",
                     choices = GeneNames,
                     selected = "MARCH1",
                     multiple = TRUE),

      selectizeInput(inputId = "gene_Y",
                     label = "Select gene Y:",
                     choices = GeneNames,
                     selected = "SEPT1")
    ),
        # Show a plot 
    mainPanel(
      plotOutput(outputId = "corrPlot")
    )
  )
)

# Define server logic 
server <- function(input, output) {

  output$corrPlot <- renderPlot({
    req(input$gene_X)
    ggplot(data = Short_cortex5, aes_string(x=input$gene_X, y=input$gene_Y)) +
      geom_point()  +
      geom_smooth(method = lm, se = FALSE) +
      scale_x_log10() + 
      scale_y_log10()
  })
}

# Run the application 
shinyApp(ui = ui, server = server)

0 个答案:

没有答案