Вычисление среднего числа файлов приводит к «Ошибка в FUN (X [[i]], ...): определена только для фрейма данных со всеми числовыми c переменными» - PullRequest
0 голосов
/ 30 апреля 2020

Я работаю над заданием в Coursera, где мы должны прочитать коллекцию CSV-файлов и вычислить среднее значение заданной переменной для этой серии CSV-файлов (заданной аргументом загрязнителя). Объяснение назначения расположен ниже. Мой код работает до 271-го файла, после которого я получаю описанную ошибку.

Код, который я написал, выглядит следующим образом:

pollutantmean <- function(directory, pollutant, id = 1:332){
    path<-0
    total<-0
    quan<-0
    file<-0
    numberterms <-0

    for (value in id)
    {
      if(value<10)
      {
              prefix<-"00"
      }
      if(value>=10 && value<100)
      {
              prefix<-"0"
      }
      if(value>99)
      {
              prefix <-""
      }

    path[value]<- paste(directory,"/",prefix,as.character(value), ".csv", sep="")

    file<- read.csv(as.character(path[value]))
    total[value]<-sum(file[c(pollutant)], na.rm=TRUE)
    quan[value]<-sum(as.numeric(!is.na(file[c(pollutant)])), na.rm=TRUE)
    }       

     sum(total, na.rm = TRUE)/sum(quan, na.rm = TRUE)
     }

Текст назначения:

ZIP-файл содержит 332 значения, разделенные запятыми (CSV) файлы, содержащие мониторинг загрязнения> данные о загрязнении воздуха мелкими твердыми частицами (ТЧ) в 332 местах в Соединенных Штатах. Каждый> файл содержит данные с одного монитора, а идентификационный номер каждого монитора содержится в> имени файла. Например, данные для монитора 200 содержатся в файле «200.csv». Каждый файл> содержит три переменные:

Дата: дата наблюдения в формате ГГГГ-ММ-ДД (год-месяц-день). Сульфат: уровень содержания сульфата в воздухе в эту дату. (измеряется в микрограммах на куб. c метр) нитрат: уровень содержания нитрата PM в воздухе в эту дату (измеряется в микрограммах на куб. c метр). Для этого задания по программированию вам необходимо распаковать этот файл и создать каталог. > 'specdata. Разархивировав zip-файл, не вносите никаких изменений в файлы в> каталоге «specdata». В каждом файле вы заметите, что есть много дней, когда отсутствует> сульфат или нитрат (или оба) (кодируется как NA). Это часто встречается в случае загрязнения воздуха> данных мониторинга в Соединенных Штатах.

Часть 1

Напишите функцию с именем 'pollutantmean', которая рассчитывает среднее значение загрязнителя (сульфат или> нитрат). ) через указанный список мониторов. Функция 'pollutantmean' принимает три> аргумента: 'directory', 'pollutant' и 'id'. При заданных идентификационных номерах векторных мониторов> 'pollutantmean' считывает данные мониторинга твердых частиц из каталога, указанного в> аргументе 'directory', и возвращает среднее значение загрязнителя по всем мониторам,> игнорируя все пропущенные значения, закодированные как NA , Прототип функции выглядит следующим образом:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...