替换 SpatialPolygonsDataFrame 列表中特定@data 列中的 NA
Replace NAs within a specific @data column within a SpatialPolygonsDataFrame list
我有一个包含 65 个 SpatialPolygonDataFrames 的大列表,名为 map_years
。我需要在此列表中的 SPDF 中的 @data
插槽中的列中用零替换 NA。
我可以通过这样做调用此专栏:
> map_years[["map1951"]]@data$CATCH
[1] NA 642.11 NA NA NA NA NA 0.00 281.65
我可以通过这样做得到一份 NA 列表:
> is.na(map_years[["map1951"]]@data$CATCH)
[1] TRUE FALSE TRUE TRUE TRUE TRUE TRUE FALSE FALSE
但我不知道如何替换这些 NA。以下不起作用:( -
[1] map_years[is.na(map_years[["map1950"]]@data$CATCH)] <- 0
[2] map_years[[is.na(map_years[["map1950"]]@data$CATCH)]] <- 0
[3] map_years[["map1950"]]@data[is.na(map_years[["map1950"]]@data$CATCH)] <- 0
下面是这个列表结构的截图:
编辑: 我只是在使用 maptools
数据集 wrld_simpl
的略微修改版本,所以任何编辑 @data
data(wrld_simpl)
数据集中的列有效。
因为map_years[["map1951"]]@data$CATCH
是一个向量,我们可以使用相同的技术来替换向量中的值,如下所示。
map_years[["map1951"]]@data$CATCH[is.na(map_years[["map1951"]]@data$CATCH)] <- 0
此外,上述代码还可以进一步简化为如下。这是访问 SpatialPolygonDataFrames 中的列的另一种方法,因为访问 data
插槽得到了简化。
map_years[["map1951"]]$CATCH[is.na(map_years[["map1951"]]$CATCH)] <- 0
我有一个包含 65 个 SpatialPolygonDataFrames 的大列表,名为 map_years
。我需要在此列表中的 SPDF 中的 @data
插槽中的列中用零替换 NA。
我可以通过这样做调用此专栏:
> map_years[["map1951"]]@data$CATCH
[1] NA 642.11 NA NA NA NA NA 0.00 281.65
我可以通过这样做得到一份 NA 列表:
> is.na(map_years[["map1951"]]@data$CATCH)
[1] TRUE FALSE TRUE TRUE TRUE TRUE TRUE FALSE FALSE
但我不知道如何替换这些 NA。以下不起作用:( -
[1] map_years[is.na(map_years[["map1950"]]@data$CATCH)] <- 0
[2] map_years[[is.na(map_years[["map1950"]]@data$CATCH)]] <- 0
[3] map_years[["map1950"]]@data[is.na(map_years[["map1950"]]@data$CATCH)] <- 0
下面是这个列表结构的截图:
编辑: 我只是在使用 maptools
数据集 wrld_simpl
的略微修改版本,所以任何编辑 @data
data(wrld_simpl)
数据集中的列有效。
因为map_years[["map1951"]]@data$CATCH
是一个向量,我们可以使用相同的技术来替换向量中的值,如下所示。
map_years[["map1951"]]@data$CATCH[is.na(map_years[["map1951"]]@data$CATCH)] <- 0
此外,上述代码还可以进一步简化为如下。这是访问 SpatialPolygonDataFrames 中的列的另一种方法,因为访问 data
插槽得到了简化。
map_years[["map1951"]]$CATCH[is.na(map_years[["map1951"]]$CATCH)] <- 0