2016-05-03 8 views
0

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

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

+0

Одна вещь: используйте вместо этого 'colnames (NGSA.df) [i]'. Ваша версия без необходимости копирует весь столбец данных, тогда как вам нужно только имя переменной. Пожалуйста, укажите имя используемого вами пакета, а также 'idw' не является базовой функцией R. – lmo

+0

Для этой строки кода пакет «gstat» –

+0

Должен признать, что я удивлен, что 'log10 (« Ag_ppm »)' не бросает ту же ошибку. Попробуйте обернуть coln в 'get':' log10 (get (coln)) '. – lmo

ответ

0

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

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

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