Добавление аргумента в математическую функцию

Я пытаюсь автоматизировать процесс создания интерполированных геохимических карт.
Я создал цикл, который по существу начинается с столбца #13 и петляет до #67.

Однако часть кода IDW требует заголовка текущего столбца для отображения соответствующих геохимических параметров.

Например; заголовок столбца #13 — «Ag_ppm» , поэтому исходный код считывается:

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

Мне удалось получить заголовок интересующего столбца в каждом цикле с помощью (где я увеличиваю на 1 каждый цикл; 13, 14, 15 и т. д.

    coln <- colnames(NGSA.df[i])

Однако, когда я просто заменяю «Ag_ppm» на coln, строка завершается с данной ошибкой. Я пробовал различные подходы, включая paste, хотя все по-прежнему приводит к той же ошибке.

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

Ошибка в log10 (coln): нечисловой аргумент математической функции

Существует ли достаточно простой подход с использованием текущего метода?

1 ответ

  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может быть лучшим решением.