Я пытаюсь создавать растры по слоям, используя пакет 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"
Чтобы избежать вложенных вызовов вставки, я предлагаю изучить пакет клей.
Это ошибка, которую вы можете игнорировать. Это было исправлено в версии для разработчиков, которую вы можете установить с помощью install.packages('terra', repos='https://rspatial.r-universe.dev')
, но она еще не попала в CRAN.
На самом деле я хочу 3 отдельных растра.