Я пытаюсь написать сценарий R, который вычисляет среднее значение указанного загрязнителя (нитрата или сульфата) на основе данных от одной или нескольких из 332 станций мониторинга. Данные с каждой станции хранятся в отдельном файле с номером 1: 332. Я новичок в R и, честно говоря, всем, кто хочет мне помочь, я должен сказать, что это проблема домашних заданий. Я написал ниже сценарий, который работает только для одного файла:Вычисление среднего из данных, хранящихся в нескольких файлах
pollutantmean <- function(directory, pollutant, id = 1:332) {
filepath <- "/Users/jim/Documents/Coursera/2_R_Prog/Data"
for(i in seq_along(id)) {
if(id < 10) {
name <- paste("00", id[i], sep = "")
}
if(id >= 10 && id < 100) {
name <- paste("0", id[i], sep = "")
}
if(id >= 100) {
name <- id[i]
}
}
file <- paste(name, "csv", sep = ".")
station <- paste(filepath, directory, file, sep = "/")
monitor <- read.csv(station)
if(pollutant == "nitrate") {
x <- mean(monitor$nitrate, na.rm = T)
}
if(pollutant == "sulfate") {
x <- mean(monitor$sulfate, na.rm = T)
}
x
}
Однако, если я введу более одного файла (например, 70:72) Я получаю среднее значение для последнего файла только (72). Это подсказывает мне, что он вычисляет среднее значение для каждого файла и затем перезаписывает его средним значением следующего, так что выводится только последнее. Я смог бы решить это с помощью rbind(), но не могу понять, как назначить уникальные имена для каждой переменной, которые затем станут аргументами для rbind(). Я был бы признателен за любую помощь, которую может предложить любой. Cheers, Jim
http://stackoverflow.com/questions/23640594/reading-multiple-files-and-calculating-mean-based-on-user-input – user227710
Вы не»цикл по файлам! –
Спасибо за помощь, Жюльен. Вы дали мне полезные советы о «sprintf» и работе с циклами. Однако ваш код дает такое же количество средств, что и «длина (id)». То, что мне нужно в конце, - это всего лишь одно среднее, поэтому мне нужно найти способ поместить все данные в один вектор, а затем вычислить среднее из этого. –