问题描述
我必须在R中的栅格堆栈上应用具有多个参数的函数。 我的功能是:
predict_np <- function(fPET_PM,Bc.star,index,model.np){
eval.data <- data.frame(X1 = fPET_PM,X2 = Bc.star)
sim_fPET <- predict(model.np[[index]],newdata = eval.data)
return(sim_fPET)
}
在上面的函数中,我有三个参数(fPET_PM,Bc.star和index)作为栅格,而第四个参数(即model.np)作为包含不同拟合模型的列表(基本上,该拟合模型将用于预测)基于索引值)。如何使用上述函数将上述函数应用于获取预测的栅格输出。
我正在创建以下示例数据:
library(raster)
library(np)
fPET_PM <- matrix(runif(400),20,20)
fPET_PM <- raster(fPET_PM)
extent(fPET_PM) <- c(36,37,-3,-2)
projection(fPET_PM) <- CRS("+proj=longlat +datum=wgs84")
Bc.star <- matrix(runif(400),20)
Bc.star <- raster(Bc.star)
extent(Bc.star) <- c(36,-2)
projection(Bc.star) <- CRS("+proj=longlat +datum=wgs84")
index <- matrix(round(runif(400,1,47)),20)
index <- raster(index)
extent(index) <- c(36,-2)
projection(index) <- CRS("+proj=longlat +datum=wgs84")
以下是装配型号列表的链接: https://drive.google.com/file/d/1TpGZMLQZZd6FhCMMhsBtHw6NDaC5furz/view?usp=sharing
到目前为止,我尝试了以下代码:
out <- predict_np(fPET_PM,model.np)
但是不起作用!
解决方法
您应该能够执行类似的操作
s <- stack(fPET_PM,Bc.star,index)
names(s) <- c("fPET_PM","Bc.star","index")
out <- predict(s,model.np)