как усреднить значения по фреймам данных? - PullRequest
0 голосов
/ 19 сентября 2018
file.names <- list.files(path = 'mypath')
file.names <- paste("mypath", file.names, sep="/")
for(i in 1:length(file.names))
{
   assign(paste("Frame",i,""), read.table(file.names[i], sep="", header=FALSE))
}

Мой код выше считывает файлы из каталога и добавляет их во фрейм данных.У меня есть тысячи этих файлов.Вопрос в том, как мне получить все фреймы данных, которые я создаю для каждого файла, и усреднить каждое значение по всем фреймам данных.Это так же, как если у вас есть матрица 100x100 из 1000 файлов (фреймов данных), вам просто нужна матрица 100x100 со средними значениями по фреймам данных.Любая помощь очень ценится.Я застрял на некоторое время с этим.

1 Ответ

0 голосов
/ 20 сентября 2018

Следующий код, кажется, делает свое дело.Благодаря @ Грегор

X <- NULL
mylist <- list()
args = commandArgs(trailingOnly=TRUE)
# test if there is at least one argument: if not, return an error
if (length(args)==0){
  stop("At least one argument must be supplied (input file).n", call.=FALSE)
} else if (length(args)==1){
  file.names <- list.files(path =args[1],pattern=".gdat")
  file.names <- paste(args[1], file.names, sep="/")
  args[2] <- paste(args[1], "avg.txt", sep="/")

  for(i in 1:length(file.names))
  {mylist[i]  <- list(read.table(file.names[i], sep="", header=FALSE))}
  X <- Reduce("+", mylist) / length(mylist) #this is the funx that averages across dataframes
  write.table(X, file=args[2], sep="\t",row.names=FALSE, quote=FALSE)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...