автокриге и proj4string

Я использую функцию R autokrige из пакета automap, но у меня возникла ошибка, и я не знаю, как ее решить. У вас есть подсказки?

Благодарю вас!

sp.poidf <- SpatialPointsDataFrame(sp.poi,thresh.df)
proj4string(sp.poidf) <- CRS("+proj=longlat +datum=WGS84")
pro.df=spTransform(sp.poidf, CRS("+proj=merc +zone=32s +datum=WGS84"))
sp.new <- SpatialPoints(new.poi)
proj4string(sp.new) <- CRS("+proj=longlat +datum=WGS84")
pro.new <- spTransform(sp.new, CRS("+proj=merc +zone=32s +datum=WGS84"))
mykri <- autoKrige(mythresh~1,pro.df,newdata=pro.new)

Error in function (classes, fdef, mtable)  : 
unable to find an inherited method for function "proj4string", for signature "NULL"

person user1634468    schedule 29.08.2012    source источник


Ответы (1)


Следующий код воспроизводит вашу проблему:

require(automap)
require(rgdal)
loadMeuse()

proj4string(meuse) = CRS("+init=epsg:28992")
proj4string(meuse.grid) = CRS("+init=epsg:28992")
meuse = spTransform(meuse, CRS("+proj=merc +zone=32s +datum=WGS84"))
# Note that meuse.grid no longer is a grid due to the reprojection
meuse.grid = spTransform(meuse.grid, CRS("+proj=merc +zone=32s +datum=WGS84"))

kr = autoKrige(zinc~1, meuse, newdata = meuse.grid)
Error in function (classes, fdef, mtable)  : 
  unable to find an inherited method for function "proj4string", for signature "NULL"

Проблема в том, что вы используете newdata =, а должны использовать new_data = (обратите внимание на подчеркивание). Следующий код работает нормально:

kr = autoKrige(zinc~1, meuse, new_data = meuse.grid)

Документация autoKrige показывает это, но krige (из gstat) использует newdata, так что я понимаю путаницу.

Что идет не так, так это то, что newdata = не распознается autoKrige и помещается в часть ... списка аргументов. Когда autoKrige вызывает krige, возникает конфликт между new_data, предоставленным autoKrige, и newdata, переданным через .... Чтобы другие пользователи не получили довольно расплывчатое сообщение об ошибке, я добавил проверку в automap. Ошибочный код теперь приводит к исключению:

> kr = autoKrige(zinc~1, meuse, newdata = meuse.grid)
Error in autoKrige(zinc ~ 1, meuse, newdata = meuse.grid) : 
  The argument name for the prediction object is not 'newdata', but 'new_data'.
person Paul Hiemstra    schedule 30.08.2012
comment
Новая версия скоро появится на CRAN. - person Paul Hiemstra; 30.08.2012
comment
Есть ли причина не использовать широко распространенное стандартное имя аргумента newdata для такого рода вещей? Несоответствия не помогают обучению R. - person Gavin Simpson; 30.08.2012