Всегда включайте пример данных (см. Файлы справки для вдохновения, здесь от ?raster::terrain
)
library(raster)
x <- getData('alt', country='CHE')
aspect <- terrain(x, 'aspect', unit='degrees')
slope <- terrain(x, 'slope', unit='degrees')
Это лучший способ переклассификации:
m <- matrix(c(0,22.5,1,22.5,337.50,0,337.5,360,1), ncol=3, byrow=TRUE)
aspectcls <- reclassify(aspect, m)
Получить уклонданные, где aspectcls! = 0
nslope <- mask(slope, aspectcls, maskvalue=0)
Получить значения
v <- values(nslope)
boxplot(v)
Вы также можете сделать
crosstab(aspectcls, slope)
Я бы не рекомендовал путь, который вы выбрали, ноесли бы вы взяли его, вы могли бы сделать
cells <- Which(aspectcls, cells=T)
vv <- slope[cells]
boxplot(vv)