R 如何传递用户选择的列标题,以便在单张弹出窗口中显示这些变量
我希望用户能够选择他们在传单地图的弹出窗口中看到的变量。当变量被硬编码时,它工作。但是,传递列标题时出现了一些问题。下面是一个可复制的示例,您会注意到,当您选择两个变量时,地图将显示,但弹出窗口中没有任何数据R 如何传递用户选择的列标题,以便在单张弹出窗口中显示这些变量,r,shiny,sf,R,Shiny,Sf,我希望用户能够选择他们在传单地图的弹出窗口中看到的变量。当变量被硬编码时,它工作。但是,传递列标题时出现了一些问题。下面是一个可复制的示例,您会注意到,当您选择两个变量时,地图将显示,但弹出窗口中没有任何数据 library(shiny) library(sf) library(leaflet) ui <- fluidPage( titlePanel("test"), mainPanel( leafletOutput("map"),
library(shiny)
library(sf)
library(leaflet)
ui <- fluidPage(
titlePanel("test"),
mainPanel(
leafletOutput("map"),
selectInput("var1", label = h5("Select Independent"), "", multiple = TRUE),
selectInput("var2", label = h5("Select Dependent"), "", multiple = TRUE)
)
)
server <- function(input, output, session) {
nc <- reactive({
st_read(system.file("shape/nc.shp", package="sf"))
})
observe({
updateSelectInput(
session,
"var1",
choices=names(nc()))
})
observe({
updateSelectInput(
session,
"var2",
choices=names(nc()))
})
output$map <- renderLeaflet({
req(input$var1)
req(input$var2)
x <- as.character(input$var1)
y <- as.character(input$var2)
leaflet(nc()) %>% addTiles %>% addPolygons(
popup = paste0("Var1: ", as.character(nc()$x),"<br>",
"Var2: ", as.character(nc()$y),"<br>")
)
})
}
shinyApp(ui = ui, server = server)
库(闪亮)
图书馆(sf)
图书馆(单张)
ui传递列名字符串时,需要使用双索引而不是美元符号,例如
library(shiny)
library(sf)
library(leaflet)
ui <- fluidPage(
titlePanel("test"),
mainPanel(
leafletOutput("map"),
selectInput("var1", label = h5("Select Independent"), "", multiple = TRUE),
selectInput("var2", label = h5("Select Dependent"), "", multiple = TRUE)
)
)
server <- function(input, output, session) {
nc <- reactive({
st_read(system.file("shape/nc.shp", package="sf"))
})
observe({
updateSelectInput(
session,
"var1",
choices=names(nc()))
})
observe({
updateSelectInput(
session,
"var2",
choices=names(nc()))
})
output$map <- renderLeaflet({
req(input$var1)
req(input$var2)
x <- as.character(input$var1)
y <- as.character(input$var2)
leaflet(nc()) %>% addTiles %>% addPolygons(
popup = paste0("Var1: ", as.character(nc()[[x]]),"<br>",
"Var2: ", as.character(nc()[[y]]),"<br>")
)
})
}
shinyApp(ui = ui, server = server)
库(闪亮)
图书馆(sf)
图书馆(单张)
由于某种原因,将nc()$x
替换为nc()[,x]
会起作用。这会将每个变量的列表添加到每个多边形中。它不提供所单击多边形的指定属性。