Следующий код воспроизводит вашу проблему:
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