我整理了一个过滤一堆东西的脚本。但是每当我运行它时,都会出现此错误:st_geometry' applied to an object of class "character"
奇怪的是,如果我在闪亮的应用程序外部运行它,像这样,它就可以正常工作:
mapView(nv %>% st_sf() %>% st_buffer(0) %>% group_by(super_region, region) %>% summarize(geometry = st_union(geometry)))
但是当我在下面的脚本中运行它时,它将返回该错误。我在做什么错?
library(tigris) library(mapview) library(leaflet) library(sf) library(dplyr) library(shiny) library(shinyWidgets) **nv <- [Download shapefile here: https://github.com/gooponyagrinch/blob/blob/master/testdata.shp]** sr <- nv %>% st_sf() %>% st_buffer(0) %>% group_by(super_region) %>% summarize(geometry = st_union(geometry)) sr_region <- nv %>% st_sf() %>% st_buffer(0) %>% group_by(super_region, region) %>% summarize(geometry = st_union(geometry)) region_turf <- nv %>% st_sf() %>% st_buffer(0) %>% group_by(region, turf) %>% summarize(geometry = st_union(geometry)) turf_area <- nv %>% st_sf() %>% st_buffer(0) %>% group_by(turf, areas) %>% summarize(geometry = st_union(geometry)) area <- nv %>% st_sf() %>% st_buffer(0) %>% group_by(areas) %>% summarize(geometry = st_union(geometry)) ui <- fluidPage( fluidRow( column(8, width = 10, offset = 1, tags$h3("Select Area"), panel( selectizeGroupUI( id = "filters", params = list( SR = list(inputId = "super_region", title = "Super Region:"), Reg = list(inputId = "region", title = "Region:"), Turf = list(inputId = "turf", title = "Turf"), Areas = list(inputId = "areas", title = "Areas:") )) ), leafletOutput("test") ) ) ) server <- function(input, output, session) { res_mod <- callModule( module = selectizeGroupServer, id = "filters", data = nv, vars = c('super_region', 'region', 'turf', 'areas') ) map_data <- reactive({ res <- ifelse(!is.null(input$areas), area %>% filter(areas %in% input$areas), ifelse(!is.null(input$turf), turf_area %>% filter(turf %in% input$turf), ifelse(!is.null(input$region), region_turf %>% filter(region %in% input$region), ifelse(!is.null(input$super_region), sr_region %>% filter(super_region %in% input$super_region), sr)))) }) output$test <- renderLeaflet({ res <- map_data() mapview(res)@map }) } shinyApp(ui,server)
同样,如果我想运行,例如,在Shiny之外运行名为sr_region的对象,它运行良好,只是当我将其作为大型应用程序的一部分运行时。
出了什么问题?
我整理了一个过滤一堆东西的脚本。但是每当我运行它时,我都会收到以下错误:st_geometry'应用于类“ character”的对象上如果在我的...之外运行它,这是奇怪的。
ifelse()
控件替换if ... else ...
函数,如下所示:if(!is.null(input$areas))
res <- area %>% filter(areas %in% input$areas)
else
if(!is.null(input$turf))
res <- turf_area %>% filter(turf %in% input$turf)
else
if(!is.null(input$region))
res <- region_turf %>% filter(region %in% input$region)
else
if(!is.null(input$super_region))
res <- sr_region %>% filter(super_region %in% input$super_region)
else
res <- sr