2015-10-06 4 views
0

Я использую функцию ниже, но я ошибался, и те же ответы на то, что я вызываю, выполняют функции. Не могли бы вы помочь? Что я делаю неправильно?Простая функция R с импортом данных и для структуры

pollutantmean <- function(directory, pollutant, id){ 
    directory<- list.files("specdata", full.names = TRUE) 
    id <- 1:332 
    getmean <- data.frame(check.rows = TRUE) 
    for(i in seq_along(id)) { 
    getmean<- rbind(getmean,read.csv(directory[i], blank.lines.skip = TRUE))} 
    pollutant <- c("sulfate", "nitrate") 
    for (i in seq_along(pollutant)) { poll <- i} 
    mean(getmean[ , poll], na.rm = TRUE) 
    } 

Тогда я называю

pollutantmean("specdata", "nitrate", 23) 

Я получил

# [1] 3.189369 

, когда я называю pollutantmean("specdata", "sulfate", 23), я получил тот же ответ

+1

Поиск 'pollutantmean' в SO, вопросы Coursera задавались и много раз отвечали здесь. –

ответ

1

Есть несколько вещей, которые я заметил, что не правы с вашей программой.

  1. Ваш каталог всегда будет таким же, независимо от того, какой аргумент вы дадите для каталога.
  2. seq_along не требуется в вашем первом цикле for, потому что это уже последовательность, начинающаяся с 1!
  3. И самое главное, ваш цикл for влияет на опрос, но он не влияет на вызов средней функции. Это означает, что для опроса всегда установлено значение 1, а затем 2 и конец цикла for. Ваш средний вызов будет всегда вызывать с опросом, установленным на 2. Вот почему вы получаете тот же ответ независимо.
  4. Это примечание, но ваши аргументы на самом деле ничего не делают с вашей программой, так как я дополнительно изучаю ваш код. Вы устанавливаете значения для переменных внутри вашей функции.
Смежные вопросы