Как построить матрицу с выбранными пользователем параметрами? R Shiny - PullRequest
0 голосов
/ 16 января 2019

Я пытаюсь создать блестящее приложение, которое будет отображать ген интереса для выбранного пациента. Каждая строка - это имя гена, а каждый столбец - идентификатор пациента. Например:

        99901    99902  99903   99904
SKI     4.789    5.789  6.324   1.2222
VWA1    6.901    7.002  5.89    4.567
TTLL10  6.783    7.345  8.987   6.345

library(shiny)
library(shinythemes)
library(lattice)

anno <- as.matrix(anno_genExp_gen3[1:3, 1:3])

#Define UI
ui <- fluidPage(
    sidebarPanel(
      titlePanel(title = "Gen3 Gene Expression Data"),
      selectInput(inputId = "patients", 
                  label = strong("Please choose patient/s to examine"),
                  choices = colnames(anno_genExp_off[,1:25]), 
                  multiple = TRUE),
      selectInput(inputId = "geneExp",
                  label = "Please select gene expressions/s to examine",
                  choices = rownames(anno_genExp_off[1:25,]), 
                  multiple = TRUE)),
    mainPanel(plotOutput("testPlot"))  
    )

server <- function(input, output) {
  pdata <- reactive(input$patients)
  gdata <-reactive(input$geneExp)
  output$testPlot <- renderPlot ({
    levelplot(anno, 
              col.regions=colorRampPalette(c("red","green","blue")))
  })
}

shinyApp(ui = ui, server = server)

Приведенный выше код просто отображает небольшую матрицу, но как мне получить ее для отображения пользовательских входов с использованием реактивности?

Если пользователь выбирает SKI и TTlLL10 только для пациента 99901, как мне будет составлять график?

1 Ответ

0 голосов
/ 16 января 2019

Я сам создал примерный фрейм данных, как вы упомянули выше. Вот модифицированный код.

Изменения, которые я сделал:

  • input$geneExp и input$patients уже являются реактивными, поэтому нет необходимости использовать отдельную реактивную функцию.

  • Отфильтрованный фрейм данных для построения графиков используется тот же

  • Кроме того, в selectInput установлено значение по умолчанию selected, чтобы избежать появления начального сообщения об ошибке, когда ничего не выбрано

library(shiny)
library(shinythemes)
library(lattice)

anno_genExp_off <- data.frame(`99901` = c(4.3,6.5,6.6),
                              `99902` = c(5.3,7.5,8.6),
                              `99903` = c(6.3,8.5,9.6),
                              row.names = c("SKI","VWA1","TTLL10"))


anno <- as.matrix(anno_genExp_off)

#Define UI
ui <- fluidPage(
  sidebarPanel(
    titlePanel(title = "Gen3 Gene Expression Data"),
    selectInput(inputId = "patients", 
                label = strong("Please choose patient/s to examine"),
                choices = colnames(anno_genExp_off), 
                selected = colnames(anno_genExp_off)[1],
                multiple = TRUE),
    selectInput(inputId = "geneExp",
                label = "Please select gene expressions/s to examine",
                choices = rownames(anno_genExp_off), 
                selected = rownames(anno_genExp_off)[1],
                multiple = TRUE)),
  mainPanel(plotOutput("testPlot"))  
)

server <- function(input, output) {
  #pdata <- reactive(input$patients)
  #gdata <-reactive(input$geneExp)


  output$testPlot <- renderPlot ({
    levelplot(x = as.matrix(anno_genExp_off[which(rownames(anno_genExp_off) %in% input$geneExp) ,input$patients]), 
              col.regions=colorRampPalette(c("red","green","blue")))
  })
}

shiny::shinyApp(ui,server)


enter image description here

...