问题描述
sf_owin = maptools::as.ppp.SpatialPointsDataFrame(as_Spatial(sf_points__flat))
sf_points__flat 看起来像这样:
Simple feature collection with 131 features and 3 fields
geometry type: MULTIPOINT
dimension: XY
bBox: xmin: -1932934 ymin: 4958872 xmax: -1439558 ymax: 5861173
projected CRS: NAD83(2011) / UTM zone 16N
# A tibble: 131 x 4
# Groups: COOPID [131]
COOPID STATION_NA geometry Annual_Precipitation
* <dbl> <chr> <MULTIPOINT [m]> <dbl>
1 0 Ontario ((-1899685 5335073)) 9.24
2 100010 ABERDEEN EXPERIMNT STN ((-1610453 5091311)) 12.4
3 100227 AMERICAN FALLS 3 NW ((-1623401 5075011)) 20.4
4 100282 ANDERSON dam ((-1807106 5212322)) 16.3
5 100347 ARBON 2 NW ((-1606302 5034484)) 10.2
6 100375 ARCO ((-1622855 5179969)) 19.5
7 100448 ARROWROCK dam ((-1834338 5254236)) 20.1
8 100470 ASHTON ((-1458491 5179214)) 37.5
9 100528 AVERY RS #2 ((-1678382 5654084)) 25.3
10 100667 BAYVIEW MODEL BASIN ((-1691954 5753129)) 9.69
# ... with 121 more rows
Marked planar point pattern: 131 points
Mark variables: COOPID,STATION_NA,Annual_Precipitation
window: rectangle = [-1932934.3,-1439558.2] x [4958872,5861173] units
Stations_ppp_types = split(sf__owin,which.marks = "Type")
Error in split.ppp(sf__owin,which.marks = "Type") :
Data frame of marks contains no factors
如何通过将 sf 对象转换为 ppp 来按标记(STATION_NA)拆分 ppp
解决方法
这个问题是关于 spatstat
包的。
错误消息表明 split
命令已调度到 split.ppp
,因此您可以查找 split.ppp
的帮助以找出问题。
帮助文件会告诉您参数 which.marks
被 split.ppp
忽略。所以你可以删除那个参数。
要分割点模式,您需要一个 factor
(指定分组的分类值向量)。点图案中的标记不是因素。 (这就是错误消息所说的内容。)根据您的打印输出,列 STATION_NA
是字符值。如果要根据这些值拆分模式,则需要将它们转换为因子值。例如
f <- marks(sf_owin)$"STATION_NA"
f <- factor(f)
Y <- split(sf_owin,f)
或者您可以先修复点模式中的标记,以便 split.ppp
自动工作:
marks(sf_owin)$"STATION_NA" <- factor(marks(sf_owin)$"STATION_NA")
Y <- split(sf_owin)