Ошибка зацикливания в R для чтения нескольких файлов - PullRequest
0 голосов
/ 01 июня 2018

Итак, я создаю цикл в R, который читает несколько CSV-файлов в каталоге с именем «specdata», а затем сообщает вам среднее значение определенного столбца общего в этих файлах.Эта функция представлена ​​в следующем параграфе. Аргументы, которые вы указываете: каталог, в котором находятся эти файлы, столбец, который вы хотите вычислить, и последовательность идентификаторов, которая сообщает вам, сколько файлов вы хотите прочитать в зависимости от объекта.число, представляющее подмножество []

Ранее я задавал вопрос об этой функции, и она была решена, теперь она работает и дает результат.Но он дает неправильный, он дает NA или NAN всегда, когда он должен дать число.

    pollutantmean <- function(directory,pollutant,id) {
  for (i in id) {archivo  <-  list.files(directory,full.names = TRUE)
  datapollution <- rbind(read.csv(archivo[i],header = TRUE))
  datamatrix <- data.matrix(datapollution)
  resultmean <- mean(datamatrix[pollutant],na.rm = TRUE)}
  print(resultmean)}

почему не работает?Моя теория заключается в том, что я неправильно использую rbind.

1 Ответ

0 голосов
/ 01 июня 2018

Трудно предоставить более конкретную помощь из-за отсутствия примера данных / кода, но я вижу пару проблем с вашим кодом.

  1. Нет необходимости повторять list.file внутри петля for.
  2. Фактически, здесь нет необходимости в for цикле, и будет быстрее сделать что-то вроде

    archive <- list.files(directory, full.names = TRUE)
    datapollution <- do.call(rbind, lapply(archive, read.csv))
    

PS.Для максимальной помощи здесь, в SO, всегда лучше предоставить минимальный и воспроизводимый пример, включающий образцы данных .

...