繁体   English   中英

“光栅化”文档中的示例不起作用?

[英]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参数为TRUEFALSE ,添加默认值可以解决问题。

仍然让我烦恼的是:

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM