Я думаю, что это будет исправлено, если d
(который сейчас равен 4,5) является целым числом.Ваш определенный радиус должен быть основан на количестве ячеек (1,2,3, ..., n).Однако, тем не менее, вывод будет в плавающем формате, так как каждый xij
в ядре является плавающей точкой с суммой 1
.Для получения целочисленного вывода существует также третий вариант.
library(raster)
set.seed(070319)
# 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
par(mfrow=c(1,2))
plot(r)
plot(a)
#set up window
fw <- focalWeight(r, 4, type='circle')
#apply focal fxn
r.f.focal<-focal(r, w=fw, fun=modal, na.rm=TRUE)
par(mfrow=c(1,2))
plot(r)
plot(r.f.focal)
для целочисленного вывода вы также можете сделать это:
#set up window
fw <- ceiling(focalWeight(r, 4, type='circle'))#for integer output
#apply focal fxn
r.f.focal<-focal(r, w=fw, fun=modal, na.rm=TRUE)
par(mfrow=c(1,2), oma=c(0,0,0,1))
plot(r)
plot(r.f.focal)