计算R中的移动多数

计算R中的移动多数,r,R,我正在尝试计算R中光栅上的移动多数值。光栅包中的焦点函数仅提供平均值、最小值和最大值。我有一个具有3个值(1、2和3)的光栅,我希望在中心设置的3x3窗口中有最丰富的值 我怎样才能在R中最有效地做到这一点?谢谢大家! library(raster) # create data r <- raster(nrows = 120, ncol = 120, xmn=0) r[] <- sample(3, ncell(r), replace=TRUE) 库(光栅) #创建数据 r你可以做:

我正在尝试计算R中光栅上的移动多数值。光栅包中的焦点函数仅提供平均值、最小值和最大值。我有一个具有3个值(1、2和3)的光栅,我希望在中心设置的3x3窗口中有最丰富的值

我怎样才能在R中最有效地做到这一点?谢谢大家!

library(raster)

# create data
r <- raster(nrows = 120, ncol = 120, xmn=0)
r[] <- sample(3, ncell(r), replace=TRUE)
库(光栅)
#创建数据
r你可以做:

f <- function(x){
 tab <- table(x)
 # I am using the first value here, maybe you want to use the mean, 
 # if 2 or more values occur equally often.
 names(tab)[which.max(tab)][1]
}

r <- raster(nrows = 120, ncol = 120, xmn=0)
r[] <- sample(3, ncell(r), replace=TRUE)

r <- focal(r, w=3, f)

f也许我有点晚了,但这对未来的读者可能有用:

现在,在R中,您可以找到大多数(模式)的焦点函数,因此:

库(光栅)
#创建数据

这是个好办法。我在自制函数中使用了
来计算集成模式值。当然,我现在找不到该代码:-(
library(raster)

# create data
r <- raster(nrows = 120, ncol = 120, xmn=0)
r[] <- sample(3, ncell(r), replace=TRUE)

a<-focal(r, w=matrix(1,3,3), fun=modal)    # 3x3 moving window
plot(a)