JCB*_*JCB 3 datatable r leaflet shinydashboard
我已经在网络上搜索了几个星期,试图找到一个示例或代码来实现我想要用我的闪亮应用程序(shinydashboard)完成的任务。我\xe2\x80\x99m 是r 的新手,我\xe2\x80\x99m 开始认为我想做的事情是不可能的。我基本上有一个带有县多边形(shapefile)的传单地图,我想使用多边形上的单击事件在地图下方的 box() 上打开相关的数据表(物种表)。多边形数据是一个包含县名和县号 ID 的 shapefile。相关数据表包含县名称、县#id 和每个县的物种名称(一对多关系)。我在想如何使用 \xe2\x80\x9cmap_shape_click\xe2\x80\x9d 中的观察函数和县 # id 在输出框()上呈现按县列出物种名称的表。然而我不知道这是否可能。到目前为止,我已经能够创建地图并使用单击事件来捕获 box() 上的县名称(参见附图)。\n这个论坛太棒了,我从帖子中学到了很多东西。感谢所有为社区做出贡献的人。如果您对如何完成此任务有任何建议,请告诉我,\n谢谢
\n\n柔佛州
\n\n\n小智 6
让我看看我是否做对了..
您可以通过捕获与单击的多边形相关的信息,然后使用 id 对表进行子集化来获得所需的结果
library(raster)
library(shiny)
library(leaflet)
library(RColorBrewer)
library(DT)
#species per region
mydata<-data.frame(myID=c("Iburengerazuba", "Iburasirazuba","Umujyi wa
Kigali","Umujyi wa Kigali", "Amajyaruguru", "Iburengerazuba",
"Amajyaruguru", "Amajyaruguru"),
myspec=c("virginiana", "setosa", "barbosa", "pelosa",
"pudica","pudica","pudica","pudica"))
#load in shapefiles for state
states <- getData("GADM", country = "rwa", level = 1)
#define color palettes for states
statePal <- colorFactor("Dark2", states@data$NAME_1)
shinyApp(
ui = fluidPage(
leafletOutput('myMap', width = "100%"),
br(),
DT::dataTableOutput("mytable", width = "100%")
),
server <- function(input, output, session){
output$myMap <- renderLeaflet({
leaflet() %>%
addTiles() %>%
addPolygons(data = states,
fillColor = ~statePal(states@data$NAME_1),
fillOpacity = 1,
color = "white",
stroke = T,
weight = 1,
layerId = states@data$NAME_1)
})
observeEvent(input$myMap_shape_click, {
#capture the info of the clicked polygon
click <- input$myMap_shape_click
#subset your table with the id of the clicked polygon
selected <- mydata[mydata$myID == click$id,]
#if click id isn't null render the table
if(!is.null(click$id)){
output$mytable = DT::renderDataTable({
selected
})
}
})
})
Run Code Online (Sandbox Code Playgroud)