У вас, кажется, есть все, что вам нужно, и таких вопросов много, но я приведу пример.Здесь предполагается, что все в одной папке.Я буду использовать свою собственную папку:
setwd(dir = "C:/Users/Evan Friedland/Documents")
# Put some fake data in a fake folder
dir.create("Test_Folder")
setwd(dir = "C:/Users/Evan Friedland/Documents/Test_Folder")
n <- 5 # let's write 5 csv files
for(i in 1:n){
write.csv(data.frame(madeupX = LETTERS[sample(1:24, 100, T)], sulfate = rnorm(100)), # fake data
paste0(sprintf("%03d", i), ".csv")) # fake names
}
csvnames <- paste0(sprintf("%03d", 1:n), ".csv")
Теперь все, что вам нужно сделать, чтобы «сложить» среднее значение каждого файла, - это инициализировать пустой вектор, выполнить цикл по ним и сохранить каждый результат в элементвектор.
means <- numeric(n) # intialize numeric type vector, n long
names(means) <- csvnames # name each element for fun
means <- sapply(1:n, function(x){ # used sapply instead of a for loop but either is fine
cat("+ ",csvnames[x],"\n") # print which csv is running
mean(read.csv(paste0(csvnames[x]))$sulfate) # return the mean of the sulfate col
})
#+ 001.csv
#+ 002.csv
#+ 003.csv
#+ 004.csv
#+ 005.csv
means # print results
#[1] 0.007859499 0.077447995 0.048796633 -0.101449790 0.224429258