[英]Example in the 'rasterize' documentation does not work?
我经常使用raster
包中的rasterize
函数。 正如其文档中所指出的,任何通过fun
参数使用的自定义函数都需要接受na.rm
参数。 这通常意味着自定义函数是用“点”编写的,即:
funA <- function(x,...)length(x)
然而,第二种建议的方法是编写一个带有显式na.rm
参数的自定义函数。 文档中给出的示例是:
funB <- function(x, na.rm) if (na.rm) length(na.omit(x))
但是,这似乎不起作用! 在这个例子中,一些随机点分布在网格上失败了:
# Create a grid
grid <- raster(ncols=36, nrows=18)
# Scatter some random points within the grid
pts <- spsample(as(extent(grid), "SpatialPolygons"), 100, type = "random")
# Give them a random data field
pts <- SpatialPointsDataFrame(pts, data.frame(field1 = runif(length(pts))))
# Try rasterize
rasterize(pts, grid, field = "field1", fun = funB)
有什么我在这里想念的吗?
谢谢! 安德鲁
你很接近。
函数 B 应如下所示:
funB <- function(x, na.rm=T) if (na.rm) length(na.omit(x))
rasterize(pts, grid, field = "field1", fun = funB)
na.rm
参数为TRUE
或FALSE
,添加默认值可以解决问题。
仍然让我烦恼的是:
funB <- function(x, na.rm) if (na.rm) length(na.omit(x))
rasterize(pts, grid, field = "field1", fun = funB, na.rm=TRUE)
应该工作,但它没有。 这可能与光栅包有关。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.