Ответ 1
ОБНОВЛЕНИЕ: Эта проблема также обсуждается в списке рассылки R, и это оказалось ошибкой/несогласованностью в разрешении переданных аргументов в конкретных случаях. Об этом сообщается Р. Обсуждение можно найти по адресу: Nabble
Довольно интересная проблема. Когда вы проверяете
showMethods("xyValues",incl=T)
Есть два важных фрагмента кода. Единица с сигнатурным вектором для xy и одна для xy в качестве матрицы. Поскольку ваш объект является объектом "RasterLayer", вам необходимо убедиться, что origin.point является матрицей. Это довольно противоречиво, если мы посмотрим на код
object="Raster", xy="vector"
function (object, xy, ...)
{
if (length(xy) == 2) {
callGeneric(object, matrix(xy, ncol = 2), ...)
}
else {
stop("xy coordinates should be a two-column matrix or data.frame, or a vector of two numbers.")
}
}
Таким образом, это фактически преобразует аргумент xy в матрицу и передает все остальные аргументы в следующий общий. Следующий должен быть следующий:
object="RasterLayer", xy="matrix"
function (object, xy, ...)
{
.local <- function (object, xy, method = "simple", buffer = NULL,
fun = NULL, na.rm = TRUE)
{
if (dim(xy)[2] != 2) {
stop("xy has wrong dimensions; it should have 2 columns")
}
if (!is.null(buffer)) {
return(.xyvBuf(object, xy, buffer, fun, na.rm = na.rm))
}
if (method == "bilinear") {
return(.bilinearValue(object, xy))
}
else if (method == "simple") {
cells <- cellFromXY(object, xy)
return(.readCells(object, cells))
}
else {
stop("invalid method argument. Should be simple or bilinear.")
}
}
.local(object, xy, ...)
}
Этот принимает аргумент "buffer". Почему значение для аргумента не может быть найдено в дереве синтаксического разбора, у меня нет подсказки, но вы можете попытаться избежать каскада метода, предоставив матрицу в качестве входных данных вместо вектора.