向数学函数添加参数
Adding an argument to a mathematical function
我正在尝试自动化生成插值地球化学图的过程。
我创建了一个循环,它基本上从第 13 列开始,一直循环到第 67 列。
但是,部分 IDW 代码需要当前列的 header 才能映射相应的地球化学参数。
例如;第 13 列的 header 是 "Ag_ppm",因此原始代码为:
LogSr.idw = idw(log10("Ag_ppm") ~ 1 , locations=NGSA.SPDF, newdata=NGSA.grid,
maxdist=15000, nmin=4)
我已经能够在每个循环中获得感兴趣的列的 header 使用(其中我每个循环增加 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)
Error in log10(coln) : non-numeric argument to mathematical function
是否有使用当前方法的相当简单的方法?
令我惊讶的是 log10("Ag_ppm")
没有抛出同样的错误,但我经常使用 get
:
来解决这个问题
LogSr.idw = idw(log10(get(coln)) ~ 1, locations=NGSA.SPDF, newdata=NGSA.grid,
maxdist=15000, nmin=4)
在大多数情况下,考虑使用 get
的替代方法是个好主意,但由于此处的公式 (~
) 以及新数据参数的使用,get
可能是最好的解决方案。
我正在尝试自动化生成插值地球化学图的过程。 我创建了一个循环,它基本上从第 13 列开始,一直循环到第 67 列。
但是,部分 IDW 代码需要当前列的 header 才能映射相应的地球化学参数。
例如;第 13 列的 header 是 "Ag_ppm",因此原始代码为:
LogSr.idw = idw(log10("Ag_ppm") ~ 1 , locations=NGSA.SPDF, newdata=NGSA.grid,
maxdist=15000, nmin=4)
我已经能够在每个循环中获得感兴趣的列的 header 使用(其中我每个循环增加 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)
Error in log10(coln) : non-numeric argument to mathematical function
是否有使用当前方法的相当简单的方法?
令我惊讶的是 log10("Ag_ppm")
没有抛出同样的错误,但我经常使用 get
:
LogSr.idw = idw(log10(get(coln)) ~ 1, locations=NGSA.SPDF, newdata=NGSA.grid,
maxdist=15000, nmin=4)
在大多数情况下,考虑使用 get
的替代方法是个好主意,但由于此处的公式 (~
) 以及新数据参数的使用,get
可能是最好的解决方案。