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

Я пытаюсь автоматизировать процесс для получения интерполированных геохимических карт. Я создал цикл, который по существу начинается в столбце № 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, строка завершается с данной ошибкой. Я пробовал различные подходы, включая вставку, хотя все по-прежнему приводит к той же ошибке.

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

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

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

1 ответ

Решение

Мне удивительно что log10("Ag_ppm") не выдает ту же ошибку, но я часто преодолевал эту проблему, используя get:

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

В большинстве ситуаций, это хорошая идея, чтобы придумать альтернативу get, но по формуле (~) здесь, и использование новых данных arguemtn, get может быть лучшим решением.

Другие вопросы по тегам