【发布时间】:2016-05-03 21:05:14
【问题描述】:
我正在尝试自动化生成插值地球化学图的过程。 我创建了一个循环,基本上从第 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) 中的错误:数学函数的非数字参数
是否有使用当前方法的相当简单的方法?
【问题讨论】:
-
一件事:改用
colnames(NGSA.df)[i]。您的版本是不必要地复制一整列数据,而您只需要变量的名称。请包含您正在使用的包的名称以及idw不是基本 R 函数。 -
对于那行代码,包是'gstat'
-
我不得不承认我很惊讶
log10("Ag_ppm")没有抛出同样的错误。尝试将 coln 包裹在get:log10(get(coln))。 -
@lmo,谢谢你。
-
现在的工作代码是:
LogSr.idw= idw(log10(get(coln))~1,locations=NGSA.SPDF,newdata=NGSA.grid, maxdist=15000,nmin=4)