ndvi<-rast("D:/tt/ndvi00_21.tif") #多波段 tmp<-rast("D:/tt/Newtmp00_21.tif") #多波段 pre<-rast("D:/tt/Newpre00_21.tif") #多波段 ndvi_tmp_pre <- c(ndvi,tmp,pre) #栅格数据集 fun_linear <- function(x){ #删除数据不连续含有NA的像元 ndvi_l<-x[1:22] tmp_l<-x[23:44] pre_l<-x[45:66] if(length(na.omit(ndvi_l))<22 || length(na.omit(tmp_l))<22 || length(na.omit(pre_l))<22) return(c(NA, NA, NA, NA)) lm_ols<-lm(ndvi_1~tmp_l+pre_l) #OLS lm_std<-lm(scale(ndvi_l)~scale(tmp_l)+scale(pre_l)) #对回归模型进行标准化 smr<- summary(lm_std) tmp_stdcor <- smr$coefficients[,"Estimate"][2] pre_stdcor <- smr$coefficients[,"Estimate"][3] tmp_pvalue <- smr$coefficients[,"Pr(>|t|)"][2] pre_pvalue <- smr$coefficients[,"Pr(>|t|)"][3] return(c(tmp_stdcor,pre_stdcor, tmp_pvalue,pre_pvalue)) } ndvi_pixellinear = app(ndvi_tmp_pre,fun_linear, cores=4) #app函数:将函数应用到每个像元 names(ndvi_pixellinear) = c( "tmp_stdcor", "pre_stdcor", "tmp_pvalue","pre_pvalue") plot(ndvi_pixellinear) writeRaster(ndvi_pixellinear, "D:/tt/ndvi_pixellinear.tif",overwrite=TRUE)有什么错误
时间: 2023-06-15 19:07:34 浏览: 153
ndvi.rar_.tif ndvi_NDVI计算_tif_tif NDVI_tiff如何做ndvi
根据你提供的代码,可能会有以下错误:
1. 没有正确加载所需的 R 包。请确保已经加载了所有需要的 R 包。
2. 文件路径不正确。请检查文件路径是否正确,并且在 Windows 系统中使用正斜杠(/)而不是反斜杠(\)。
3. 在执行函数时,需要将所需的输入参数正确传递给函数。在这种情况下,函数需要一个长度为 66 的向量,但是在您的代码中没有提供输入参数。
4. 在执行线性回归时,需要确保每个变量都有足够的数据点。在这种情况下,如果数据点的数量小于 22,则应返回 NA。
5. 在使用 `writeRaster` 函数时,需要确保输出路径和文件名正确,并且在 Windows 系统中使用正斜杠(/)而不是反斜杠(\)。
希望这些提示可以帮助您解决问题。
阅读全文