Шаг 1 : исправить непосредственную проблему:
sum_e<-data.frame(0)
q=1
for(q in 1:10)
{
sum_e<-rbind(sum_e,get(paste0("file_",. q))[15,2])
}
sum_e2<-sum(sum_e)
error_m<-sum_e/10
Шаг 2 : не иметь разные переменные для всех данных, когда они всеструктурировано одинаково.Чтобы начать это, вы должны прочитать их в список, а затем обработать их как целое.
allfiles <- list.files(path="...", pattern="*.txt", full.naames=TRUE)
list_of_frames <- lapply(allfiles, read.csv)
На этом этапе каждый элемент list_of_frames
является точно одним из ваших файлов, поэтому вам следуетспособен видеть list_of_frames[[1]]
так же, как (например) file_1
.Отсюда, всякий раз, когда вы хотите сделать «что-то» для всех них, просто сделайте это со списком, но внутри lapply
, ala:
val_15_2 <- lapply(list_of_frames, function(df) df[15,2])
avg_15_2 <- mean(unlist(val_15_2))
Это теперь список, который может илине может быть сразу полезнымЕсли вместо этого вы знаете , что все они имеют одинаковый размер / форму (одинаковую длину, один и тот же класс) и вы хотите, чтобы они были упрощены до вектора или матрицы, вы можете вместо этого использовать sapply
:
val_15_2 <- sapply(list_of_frames, function(df) df[15,2])
# or even
avg_15_2 <- mean(sapply(list_of_frames, function(df) df[15,2]))