向数学函数添加参数

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 可能是最好的解决方案。