Можете ли вы помочь найти лучший способ устранения ошибки несоответствия длины, выдаваемой dotsInPolys?Я думаю, это потому, что в данных многоугольника есть NA, NULL или какой-то фанк, что делает его слишком длинным.Вот код, который воспроизводит ошибку.В конечном счете, я хочу построить несколько рас с помощью Leaflet, но я не могу получить широту / долготу, необходимую для случайных точек на этом этапе.
require(maptools)
require(tidycensus)
person.number.divider <- 1000
census_api_key("ENTER KEY HERE", install = TRUE)
racevars <- c(White = "B02001_002", #"P005003"
Black = "B02001_003", #Black or African American alone
Latinx = "B03001_003"
)
nj.county <- get_acs(geography = "county", #tract
year = 2015,
variables = racevars,
state = "NJ", #county = "Harris County",
geometry = TRUE,
summary_var = "B02001_001")
library(sf)
st_write(nj.county, "nj.county.shp", delete_layer = TRUE)
nj <- rgdal::readOGR(dsn = "nj.county.shp") %>%
spTransform(CRS("+proj=longlat +datum=WGS84"))
nj@data <- nj@data %>%
tidyr::separate(NAME,
sep =",",
into = c("county", "state")) %>%
dplyr::select(estimat,variabl, GEOID, county) %>%
spread(key = variabl, value = estimat) %>%
mutate(county = trimws(county))
black.dots <- dplyr::select(nj@data, Black) / person.number.divider #%>%
black.dots <- dotsInPolys(nj, as.integer(black.dots$Black), f="random")
# Error in dotsInPolys(nj, as.integer(black.dots$Black), f = "random") :
# different lengths
length(nj) # 63 This seems too many, because I believe NJ has 21 counties.
length(black.dots$Black) # 21
Этот пост ( Советы по устранению ошибок dotsInPolys(maptools) ) был близок к тому, чтобы помочь мне, но я не мог понять, как применить его к своему делу.
Я могу изменить длину nj пространственной-полигональной структуры данных, удалив NA и графства с чернымзначение больше 0, но тогда карта не отображает несколько округов (возможно, что-то не так с загрузкой переписи?).