如何在R中的栅格上应用具有多个参数的函数?

问题描述

我必须在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)