st_geometry'应用于“字符”类的对象]]

问题描述 投票:0回答:1

我整理了一个过滤一堆东西的脚本。但是每当我运行它时,都会出现此错误: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
r shiny leaflet react-leaflet r-leaflet
1个回答
0
投票
© www.soinside.com 2019 - 2024. All rights reserved.