我指的是Leaflet(https://rstudio.github.io/leaflet/choropleths.html)的choropleth教程,并为Shiny修改它。根据用户选择的内容,我希望能够使用不同的列。我遇到的问题与这部分有关:
pal <- colorBin("YlOrRd", domain = states$density, bins = bins)
m %>% addPolygons(
fillColor = ~pal(density),
weight = 2,
opacity = 1,
color = "white",
dashArray = "3",
fillOpacity = 0.7)
具体来说,我希望能够将density
列替换为我可以从Shiny中的按钮获取的列(假设列称为a
和b
,并且我从name_button
对象中获取它们。我创建了col_name
函数来包含这个选择:
col_name <- reactive({
name <- switch(input$name_button, "A" = "a", "B" = "b" )
name})
然后我可以修改pal <- ...
行,如下所示(参见R how use a string variable to select a data frame column using $ notation):
pal <- colorBin("YlOrRd", domain = states[[col_name()]], bins = bins)
但是,我不确定如何更改fillColor = ~pal(density),
行,因为density
是列的名称。我试过了
fillColor = ~pal([[col_name]])
但这不起作用。我该怎么办?
此外,~
中的代字号~pal(...)
的功能是什么?