简体   繁体   English

选择反应热图列

[英]Select columns for reactive heatmap

I'm building a Shiny app and want to reactivity control which columns get displayed in a heatmap. 我正在构建一个Shiny应用程序,并希望通过反应性控制在热图中显示哪些列。 I'd like for all of the columns to be displayed at first and then be able to subset it by deselecting columns from a checkboxGroupInput . 我希望首先显示所有列,然后可以通过从checkboxGroupInput取消选择列来对其进行子集化。

When I run the code, the heatmap doesn't appear. 当我运行代码时,不会显示热图。 I tried troubleshooting by looking at the df_select dataframe but it only has the "mpg" column when it should have all of them (mpg:carb) initially. 我尝试通过查看df_select数据帧来进行故障排除,但是当它最初应该具有所有这些内容时(mpg:carb)仅包含“ mpg”列。 Including View(df_select) throws an error so it is commented out below. 包含View(df_select)会引发错误,因此在下面将其注释掉。

Any help would be greatly appreciated. 任何帮助将不胜感激。

app.R 应用程序

library(ggplot2)
library(d3heatmap)
library(dplyr)
library(shiny)

## ui.R
ui <- fluidPage(
  sidebarPanel(
    h5(strong("Dendrogram:")),
    checkboxInput("cluster_row", "Cluster Rows", value=FALSE),
    checkboxInput("cluster_col", "Cluster Columns", value=FALSE),
    checkboxGroupInput("col_list", "Select col to include:", names(mtcars), selected=names(mtcars)),
    h5(strong("Sort:")),
    checkboxInput("check_sort", "Sort (Yes/No)", value=FALSE),
    selectInput("sort", "Sort:", names(mtcars), selected="mpg")
  ),
  mainPanel(
    h4("Heatmap"),
    d3heatmapOutput("heatmap", width = "100%", height="600px")
  )
)

## server.R
server <- function(input, output) {

  df_select <- reactive({
    all <- names(mtcars)
    print(all) #debug
    selection <- input$col_list
    print(selection) #debug
    if("All" %in% input$col_list || length(input$col_list) == 0){
      selection <- all
    }else{
      selection <- input$col_list
    }
    df_select <- select_(mtcars, selection)
    #View(df_select) #debug
  })

  df_sort <- reactive({
    df_sort <- if(input$check_sort==FALSE) df_select() else arrange_(df_select(), input$sort)
  })

  output$heatmap <- renderD3heatmap({
    d3heatmap(df_sort(),
      colors = "Blues",
      if (input$cluster_row) RowV = TRUE else FALSE,
      if (input$cluster_col) ColV = TRUE else FALSE,
      yaxis_font_size = "7px"
    ) 
  })
}

shinyApp(ui = ui, server = server)

It is a standard evaluation issue. 这是一个标准的评估问题。 Use select_(mtcars, .dots=selection) (line number 38). 使用select_(mtcars, .dots=selection) (第38行)。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM