Calculate polygon spatial weights from a nb
list. See spdep::nb2listw()
for further details.
Arguments
- nb
A neighbor list object as created by
st_neighbors()
.- style
Default
"W"
for row standardized weights. This value can also be "B", "C", "U", "minmax", and "S". Seespdep::nb2listw()
for details.- allow_zero
If
TRUE
, assigns zero as lagged value to zone without neighbors.- ...
additional arguments passed to
spdep::nb2listw()
.
Details
Under the hood, st_weights()
creates a listw
object and then extracts the weights elements from it as the neighbours
element is already--presumably--already existent in the neighbors list you've already created. listw
objects are recreated using recreate_listw()
when calculating other statistics.
See also
Other weights:
st_inverse_distance()
,
st_kernel_weights()
,
st_nb_dists()
Examples
if (requireNamespace("dplyr", quietly = TRUE)) {
library(magrittr)
guerry %>%
dplyr::mutate(nb = st_contiguity(geometry),
wt = st_weights(nb),
.before = 1)
}
#> Simple feature collection with 85 features and 28 fields
#> Geometry type: MULTIPOLYGON
#> Dimension: XY
#> Bounding box: xmin: 47680 ymin: 1703258 xmax: 1031401 ymax: 2677441
#> CRS: NA
#> # A tibble: 85 × 29
#> nb wt code_dept count ave_id_geo dept region department crime_pers
#> * <nb> <lis> <fct> <dbl> <dbl> <int> <fct> <fct> <int>
#> 1 <int [4]> <dbl> 01 1 49 1 E Ain 28870
#> 2 <int [6]> <dbl> 02 1 812 2 N Aisne 26226
#> 3 <int [6]> <dbl> 03 1 1418 3 C Allier 26747
#> 4 <int [4]> <dbl> 04 1 1603 4 E Basses-Al… 12935
#> 5 <int [3]> <dbl> 05 1 1802 5 E Hautes-Al… 17488
#> 6 <int [7]> <dbl> 07 1 2249 7 S Ardeche 9474
#> 7 <int [3]> <dbl> 08 1 35395 8 N Ardennes 35203
#> 8 <int [3]> <dbl> 09 1 2526 9 S Ariege 6173
#> 9 <int [5]> <dbl> 10 1 34410 10 E Aube 19602
#> 10 <int [5]> <dbl> 11 1 2807 11 S Aude 15647
#> # ℹ 75 more rows
#> # ℹ 20 more variables: crime_prop <int>, literacy <int>, donations <int>,
#> # infants <int>, suicides <int>, main_city <ord>, wealth <int>,
#> # commerce <int>, clergy <int>, crime_parents <int>, infanticide <int>,
#> # donation_clergy <int>, lottery <int>, desertion <int>, instruction <int>,
#> # prostitutes <int>, distance <dbl>, area <int>, pop1831 <dbl>,
#> # geometry <MULTIPOLYGON>
# using geometry column directly
nb <- st_contiguity(guerry$geometry)
wt <- st_weights(nb)
wt[1:3]
#> [[1]]
#> [1] 0.25 0.25 0.25 0.25
#>
#> [[2]]
#> [1] 0.1666667 0.1666667 0.1666667 0.1666667 0.1666667 0.1666667
#>
#> [[3]]
#> [1] 0.1666667 0.1666667 0.1666667 0.1666667 0.1666667 0.1666667
#>