Данные: Папка диска, содержащая данные, может быть загружена здесь: specdata .Папка содержит 332 файла с разделенными запятыми (CSV) файлами, содержащими данные мониторинга загрязнения воздуха мелкодисперсными частицами (ТЧ) в 332 местах в Соединенных Штатах.Каждый файл содержит данные с одного монитора, а идентификационный номер каждого монитора содержится в имени файла.Например, данные для монитора 200 содержатся в файле «200.csv».Каждый файл содержит три переменные.Дата: дата наблюдения в формате (год-месяц-день), сульфат: уровень содержания сульфатов в воздухе в эту дату (измеряется в микрограммах на кубический метр) и нитраты: уровень нитратов в воздухе.на эту дату (измеряется в микрограммах на кубический метр)
Цель Напишите функцию с именем 'pollutantmean', которая вычисляет среднее значение загрязнителя (сульфата или нитрата) по указанному списку мониторов.Функция «pollutantmean» принимает три аргумента: «каталог», «загрязнитель» и «id».Учитывая идентификационные номера векторных мониторов, 'pollutantmean' считывает данные мониторинга твердых частиц из каталога, указанного в аргументе 'directory', и возвращает среднее значение загрязнителя по всем мониторам, игнорируя все пропущенные значения, закодированные как NA.
Сценарий:
pollutantmean <- function(directory,pollutant, id) {
originaldir = getwd()
setwd(paste(getwd(),"/",directory,sep = "")) ##assuming the needed folder (i.e specdata in this case) is present in originaldir
samples <- dir()
master.data.frame <- data.frame(matrix(data=NA,nrow=2,ncol=4)) ##creating an empty data frame with number of columns equal to the csv files and random number of rows.
if (pollutant == "Sulphate") {
pollutant.index = 2 ## assigning column number for sulphate
} else {
pollutant.index = 3 ## assigning column number for nitrate
}
for (i in id) {
files <- as.data.frame(read.csv(samples[i]))
master.data.frame <- rbind(master.data.frame,files)
}
means <- colMeans(master.data.frame[pollutant.index],na.rm = TRUE)
setwd(originaldir)
print(means)
}
Вызов функции:
pollutantmean("specdata","sulphate",1:10)
Сообщение об ошибке
Error in match.names(clabs, names(xi)) :
names do not match previous names
5. stop("names do not match previous names")
4. match.names(clabs, names(xi))
3. rbind(deparse.level, ...)
2. rbind(master.data.frame, files)
1. pollutantmean("specdata", "sulphate", 1:10)
Цель состоит в том, чтобы создать фрейм основных данных со всеми показаниями из всех файлов CSV, а затем отфильтровать его по столбцам и без значений NA с помощью функции colMeans.Вот где код распадается.
Пожалуйста, дайте мне знать, как устранить ошибку.