我正在尝试自动化生成插值地球化学图的过程。 我创建了一个基本上从第13列开始并循环直到#67的循环。
但是,部分IDW代码需要映射相应地球化学参数的当前列的标题。
例如;第13列的标题是“Ag_ppm”,因此原始代码为:
LogSr.idw = idw(log10("Ag_ppm") ~ 1 , locations=NGSA.SPDF, newdata=NGSA.grid,
maxdist=15000, nmin=4)
我已经能够在每个循环中获得感兴趣的列的标题(其中i每个循环增加1; 13,14,15等):
coln <- colnames(NGSA.df[i])
但是,当我简单地将“Ag_ppm”替换为coln时,该行会因给定错误而失败。我尝试了各种方法,包括粘贴,虽然一切都会导致同样的错误。
LogSr.idw = idw(log10(coln) ~ 1, locations=NGSA.SPDF, newdata=NGSA.grid,
maxdist=15000, nmin=4)
log10(coln)中的错误:数学函数的非数字参数
使用当前方法有一个相当简单的方法吗?
答案 0 :(得分:0)
令我惊讶的是,log10("Ag_ppm")
没有抛出相同的错误,但我经常使用get
克服此问题:
LogSr.idw = idw(log10(get(coln)) ~ 1, locations=NGSA.SPDF, newdata=NGSA.grid,
maxdist=15000, nmin=4)
在大多数情况下,最好考虑使用get
的替代方法,但由于此处的公式(~
),以及newdata arguemtn的使用,{{1可能是最好的解决方案。