r - idw() or krige() Error: dimensions do not match when missing values -
functions idw() , krige() gstat package keep reporting errors when either response or predictor variable contains missing values (na), when na.action set na.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 not match: locations 310 , 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 not match: locations 310 , 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 not match: locations 310 , data 154 is bug? have filter our data manually , merge results original data frames? isn't there easier solution? why there na.action option then?
the na.action argument deals missing values within newdata (not locations or data).
this stated in ?idw / ?krige / ?predict.gstat
function determining should done missing values in 'newdata'. default predict 'na'. missing values in coordinates , predictors both dealt with.
there no method deal na values within locations or data (and hence error saying there 2 more values in locations data (ie. x , y coordinate of missing data point)
you can work removing location missing value
int <- idw(zinc ~ 1, meuse2[!is.na(meuse2$zinc),],newdata= meuse.grid)
Comments
Post a Comment