我在R中创建了一个随机森林模型,并希望使用terra中的predict
函数将其应用于SpatRaster对象.我可以将栅格转换为数据帧,而不是直接在SpatRaster上预测,但是我的实际数据集太大了,无法做到这一点.
一个可重复的例子:
library(terra)
library(ranger)
r <- rast(ncols=95, nrows=90, nlyrs=5, crs="+proj=longlat",
xmin=5.74167, xmax=6.5333, ymin=49.44167, ymax=50.19167,
names=c("band1","band2","band3","band4","band5"))
# Fill the raster with random values
set.seed(123)
r$band1 <- runif(n = ncell(r))
r$band2 <- init(r, "cell")
r$band3 <- sample(1:10, ncell(r), replace = T)
r$band4 <- sample(1:10, ncell(r), replace = T)
r$band5 <- sample(1:10, ncell(r), replace = T)
# Extract some random raster values as training data
extr_values <- spatSample(r, 10)
extr_values$response <- as.factor(sample(c(1,2), nrow(extr_values), replace = T))
# Model
rf_model <- ranger(response ~., data = extr_values, num.trees = 50)
# Prediction
prediction <- predict(r, rf_model, na.rm = TRUE)$predictions
我try 了不同类型的模型(例如随机森林包)、不同的栅格和坐标集.更奇怪的是,我运行了执行类似任务和过go 运行的旧脚本,它们都会产生相同的错误.可能与最近一次Terra的更新有关? 任何帮助都将不胜感激.