Растрируйте точки по «наиболее часто» в R - PullRequest
0 голосов
/ 29 марта 2020

У меня есть ряд точек пространственных данных, которые я хочу преобразовать в растр с помощью функции R растеризации. Данные, которые я хочу представить, представляют собой факторное значение, поэтому я хочу представить наиболее часто встречающееся значение для каждой растровой ячейки.

Я попытался написать функцию для получения режима, но это не удалось.

getmode <- function(v) {
uniqv <- unique(v)
uniqv[which.max(tabulate(match(v, uniqv)))]
}   

#run rasterize
test <- rasterize(best, rast, best$val, fun = getmode)

приводит к этой ошибке:

Error in FUN(X[[i]], ...) : unused argument (na.rm = na.rm)

1 Ответ

1 голос
/ 30 марта 2020

Пожалуйста, всегда включайте минимальный автономный воспроизводимый пример. Вот так

library(raster)
r <- raster(ncols=20, nrows=10)
n <- 1000
set.seed(123)
x <- runif(n) * 360 - 180
y <- runif(n) * 180 - 90
xy <- cbind(x, y)
v <- sample(10, n, replace=TRUE)

Теперь добавьте ... к вашей функции (см. Документацию под fun в ?rasterize).

getmode <- function(v, ...) {
   uniqv <- unique(v)
   uniqv[which.max(tabulate(match(v, uniqv)))]
}   

И используйте ее

m <- rasterize(xy, r, v, getmode)
...