ОБНОВЛЕНИЕ:
Эта проблема также обсуждается в списке рассылки R, и она оказалась ошибкой / несогласованностью в разрешении переданных аргументов в конкретных случаях. Об этом сообщает 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, ...)
}
Этот принимает аргумент "буфер". Почему значение аргумента не может быть найдено в дереве разбора, я понятия не имею, но вы можете попытаться избежать каскада методов, указав в качестве входных данных матрицу вместо вектора.