我有以下问题试图以某种方式解决:
我使用 gstat/gdal 包创建了 10 个不同 IDW 插值数组。
现在我有以下变量,我正在尝试将其导出到我的硬盘:
DI.IDW.SAND.P.0.1, DI.IDW.SAND.P.0.2, [...]
总共有 10 个不同的数组,用于插值期间使用的不同功率(ipd 值)。
手动导出到硬盘就可以了:
writeGDAL(DI.IDW.Sand.P.0.1, fname = vec.rast[1], drivername = "GTiff", mvFlag = -1)
但现在自动化是我无法找出正确解决方案的地方:
我创建了一个data.frame
包含 for 循环的相关信息:
runner.sand = data.frame("IDP" = c(0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1), "str"=c("DI.IDW.Sand.P.0.1", "DI.IDW.Sand.P.0.2", "DI.IDW.Sand.P.0.3", "DI.IDW.Sand.P.0.4", "DI.IDW.Sand.P.0.5", "DI.IDW.Sand.P.0.6", "DI.IDW.Sand.P.0.7", "DI.IDW.Sand.P.0.8", "DI.IDW.Sand.P.0.9", "DI.IDW.Sand.P.1"))
然后我尝试了:
for (i in c(1:length(runner.sand[,1]))) {
writeGDAL(paste("DI.IDW.Sand.P", runner.sand[i,1], sep = "."), runner.sand[i,2], drivername = "GTiff")
}
但我总是得到这个错误:
Error in nchar(fname) : 'nchar()' requires a character vector
此外,在尝试自动化时,proj4string
我收到此错误:
for (i in c(1:length(runner.sand[,2]))) {
proj4string(runner.sand[i,2]) = CRS(paste("+init=epsg:",epsg,sep=""))
#dat.ov = over(IDP.opt, runner.sand[i,2]) # for later idp optimazation with residual values
#IDP.opt = cbind(IDP.opt@data, dat.ov)
}
Error in (function (classes, fdef, mtable) :
unable to find an inherited method for function 'proj4string' for signature '"character"'
同样,如果我手动输入“正常”变量名,它会完美运行:
proj4string(DI.IDW.Sand.P.0.1) = CRS(paste("+init=epsg:",epsg,sep=""))
我还尝试了此处显示的解决方案assign
,但没有任何效果。谢谢你的帮助!