Я разрабатываю панель управления Rshiny, которая позволяет загружать файл csv для визуализации тепловой карты. Файл имеет имя первого столбца как COL1, а другие столбцы - это имена идентификаторов, из которых пользователю разрешено выбирать. Некоторый код в разделе server использует R table () для суммирования двух столбцов из файла следующим образом: table (COL1, selected column), чтобы добраться до nrow (30) по cols (4). Затем эта матрица используется функцией тепловой карты. Я вижу вывод тепловой карты и выбор другого идентификатора, однако, не меняет шаблон тепловой карты, чтобы отражать разные данные для каждого выбранного идентификатора. Каждый раз, когда я выбираю другой идентификатор, я получаю одну и ту же тепловую карту. Я предполагаю, что выбор идентификатора не обновляется должным образом. Мы будем благодарны за любое решение этой проблемы.
Код:
ui <- fluidPage(
titlePanel("plot"),
sidebarLayout(
sidebarPanel("Sidebar panel",
# Input: Selector for choosing dataset ----
fileInput("file1", "Add File",
accept = c(
"text/csv",
"text/comma-separated-values,text/plain",
".csv")
),
tags$hr(),
checkboxInput("header", "Header", TRUE),
selectInput("IDs", "Add ID:", choices=c())
# actionButton('getHmap', 'get heatmap')
),
mainPanel("Plot",
#column(6,
plotOutput("themap"),
#tableOutput("table.output")
)
)
)
server = function(input, output, session) {
data1 <- reactive({
validate(need(input$file1,""))
inFile <- input$file1
if (is.null(inFile))
return(NULL)
tbl <- read.csv(inFile$datapath)
return(tbl)
})
plotdata <- reactive({
data2 <- data1()
updateSelectInput(session,"IDs",choices=colnames(data2[,-1]))
data3 <- table(data2$COL1,data2[,input$sampleIDs])
data3 <- as.data.frame.matrix(data3)
data3 <- data3[c(2,1,4,3)]
data4 <- data3
data4$COL2 <- rownames(data3)
data4 <- data4[, c(5,1:4)]
data5 <- data4[,-1]
data.df <- as.matrix(data5)
return(data.df)
})
output$themap = renderPlot({
pheatmap(plotdata())
})
}
shinyApp(ui, server)