【问题标题】:Adding an argument to a mathematical function向数学函数添加参数
【发布时间】: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)

标签: r gstat


【解决方案1】:

令我惊讶的是log10("Ag_ppm") 没有抛出相同的错误,但我经常使用get 克服这个问题:

LogSr.idw = idw(log10(get(coln)) ~ 1, locations=NGSA.SPDF, newdata=NGSA.grid,
                maxdist=15000, nmin=4)

在大多数情况下,考虑使用get 的替代方案是个好主意,但由于此处的公式(~)以及使用newdata 的arguemtn,get 可能是最好的解决方案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-04
    • 1970-01-01
    • 1970-01-01
    • 2021-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多