在栅格上使用 cut() 指定标签
specifying labels using cut() on raster
假设我有以下光栅:
library(raster)
r <- raster(ncols=36, nrows=18)
values(r) <- rnorm(ncell(r))
我可以使用 cut()
:
离散它的值
breaks <- -2:2 * 3
rc <- cut(r, breaks=breaks)
但是,当我尝试指定标签时,例如 A、B、C 等
rc <- cut(r, breaks=breaks, labels = c("A", "B", "C", "D", "E"))
它returns下面的错误。
Error in cut.default(getValues(x), breaks = breaks, labels = FALSE,
...) : formal argument "labels" matched by multiple actual
arguments
我尝试用谷歌搜索错误消息,但没有成功。知道出了什么问题吗?
首先,你只有5个休息点,所以你只能有4个标签。其次,您可以对栅格数据而不是整个栅格对象使用 cut
:
rc <- r
rc[] <- cut(rc[], breaks = breaks, labels = c("A", "B","C","D"))
rc
#> class : RasterLayer
#> dimensions : 18, 36, 648 (nrow, ncol, ncell)
#> resolution : 10, 10 (x, y)
#> extent : -180, 180, -90, 90 (xmin, xmax, ymin, ymax)
#> crs : +proj=longlat +datum=WGS84
#> source : memory
#> names : layer
#> values : 1, 4 (min, max)
#> attributes :
#> ID VALUE
#> 1 A
#> 2 B
#> 3 C
#> 4 D
我就是这样做的,使用 terra
:
library(terra)
r <- rast(ncols=36, nrows=18)
values(r) <- rnorm(ncell(r))
breaks <- -2:2 * 3
rc <- classify(r, breaks)
levels(rc)
#[[1]]
#[1] "(-6–-3]" "(-3–0]" "(0–3]" "(3–6]"
levels(rc) <- c("A", "B", "C", "D")
rc
#class : SpatRaster
#dimensions : 18, 36, 1 (nrow, ncol, nlyr)
#resolution : 10, 10 (x, y)
#extent : -180, 180, -90, 90 (xmin, xmax, ymin, ymax)
#coord. ref. : +proj=longlat +datum=WGS84 +no_defs
#source : memory
#name : layer
#min value : A
#max value : D
假设我有以下光栅:
library(raster)
r <- raster(ncols=36, nrows=18)
values(r) <- rnorm(ncell(r))
我可以使用 cut()
:
breaks <- -2:2 * 3
rc <- cut(r, breaks=breaks)
但是,当我尝试指定标签时,例如 A、B、C 等
rc <- cut(r, breaks=breaks, labels = c("A", "B", "C", "D", "E"))
它returns下面的错误。
Error in cut.default(getValues(x), breaks = breaks, labels = FALSE,
...) : formal argument "labels" matched by multiple actual
arguments
我尝试用谷歌搜索错误消息,但没有成功。知道出了什么问题吗?
首先,你只有5个休息点,所以你只能有4个标签。其次,您可以对栅格数据而不是整个栅格对象使用 cut
:
rc <- r
rc[] <- cut(rc[], breaks = breaks, labels = c("A", "B","C","D"))
rc
#> class : RasterLayer
#> dimensions : 18, 36, 648 (nrow, ncol, ncell)
#> resolution : 10, 10 (x, y)
#> extent : -180, 180, -90, 90 (xmin, xmax, ymin, ymax)
#> crs : +proj=longlat +datum=WGS84
#> source : memory
#> names : layer
#> values : 1, 4 (min, max)
#> attributes :
#> ID VALUE
#> 1 A
#> 2 B
#> 3 C
#> 4 D
我就是这样做的,使用 terra
:
library(terra)
r <- rast(ncols=36, nrows=18)
values(r) <- rnorm(ncell(r))
breaks <- -2:2 * 3
rc <- classify(r, breaks)
levels(rc)
#[[1]]
#[1] "(-6–-3]" "(-3–0]" "(0–3]" "(3–6]"
levels(rc) <- c("A", "B", "C", "D")
rc
#class : SpatRaster
#dimensions : 18, 36, 1 (nrow, ncol, nlyr)
#resolution : 10, 10 (x, y)
#extent : -180, 180, -90, 90 (xmin, xmax, ymin, ymax)
#coord. ref. : +proj=longlat +datum=WGS84 +no_defs
#source : memory
#name : layer
#min value : A
#max value : D