为什么terra中的writeRaster会给出警告信息?

Why does writeRaster in terra give a warning message?

我正在尝试使用 terra 包逐层栅格化。我正在使用以下代码

library(terra)

# first create a raster
r1 <- r2 <- r3 <- rast(nrow=10, ncol=10)
# Assign random cell values
values(r1) <- runif(ncell(r1))
values(r2) <- runif(ncell(r2))
values(r3) <- runif(ncell(r3))
s <- c(r1, r2, r3)

names(s) <- c("a", "b", "c")

writeRaster(s, paste0(names(s), ".tif"), overwrite=TRUE)

它适用于以下警告消息

Warning message:
In tools::file_ext(filename) %in% c("nc", "cdf") || isTRUE(list(...)$filetype ==  :
  'length(x) = 3 > 1' in coercion to 'logical(1)'

这条消息是什么意思?

你的线路

paste0(names(s), ".tif")

实际生成一个包含 3 个字符串的向量:

paste0(c("a", "b", "c"), ".tif")
[1] "a.tif" "b.tif" "c.tif"

您可能只需要一个文件,其名称如

paste0(paste(c("a", "b", "c"), collapse = "_"), ".tif")
[1] "a_b_c.tif"

为了避免嵌套的粘贴调用,我建议查看 glue

这是一个您可以忽略的错误。它已在您可以使用 install.packages('terra', repos='https://rspatial.r-universe.dev') 安装的开发版本中修复,但尚未进入 CRAN。