1

当响应变量或预测变量包含缺失值 ( ) 时,函数和包中的函数会不断报告错误,idw()即使设置为:krige()gstatNAna.actionna.omit

require(gstat)
data(meuse)
coordinates(meuse) = ~x+y
data(meuse.grid)
gridded(meuse.grid) = ~x+y

meuse2 <- as.data.frame(meuse)
meuse2[1, 'zinc'] <- NA
meuse2 <- SpatialPointsDataFrame(SpatialPoints(meuse), meuse2)

# idw response var
int <- idw(zinc ~ 1, meuse2, meuse.grid, na.action = na.omit)
# Error: dimensions do not match: locations 310 and data 154

# krige response var
m <- vgm(.59, "Sph", 874, .04)
int <- krige(zinc ~ 1, meuse2, meuse.grid, model = m, na.action = na.omit)
# Error: dimensions do not match: locations 310 and data 154

# krige predictor var
meuse3 <- as.data.frame(meuse)
meuse3[1, 'dist'] <- NA
meuse3 <- SpatialPointsDataFrame(SpatialPoints(meuse), meuse3)
int <- krige(zinc ~ dist, meuse3, meuse.grid, model = m, na.action = na.omit)
# Error: dimensions do not match: locations 310 and data 154

这是一个错误吗?我们真的必须手动过滤数据并将结果合并回原始数据框吗?没有更简单的解决方案吗?那为什么还有这个na.action选项?

4

1 回答 1

4

na.action参数处理newdata(not locationsor data) 内的缺失值。

这在中明确说明?idw / ?krige / ?predict.gstat

函数确定应该如何处理“newdata”中的缺失值。默认是预测“NA”。坐标和预测变量中的缺失值都得到处理。

没有方法来处理or中的NA值(因此错误基本上是说位置中还有两个值作为数据(即缺失数据点的 x 和 y 坐标)locationsdata

您可以通过删除缺少值的位置来使其工作

int <- idw(zinc ~ 1, meuse2[!is.na(meuse2$zinc),],newdata= meuse.grid)
于 2013-08-01T00:56:55.187 回答