如何跨数据帧取平均值?

时间:2018-09-19 01:51:13

标签: r dataframe

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))
}

我上面的代码从目录中读取文件,并将它们添加到数据框中。我有成千上万个这样的文件。问题是我如何才能获得为每个文件创建的所有数据帧并在所有数据帧中平均每个值。就像当您有一个100x 100的矩阵(包含1000个文件(数据帧))时,您只想要一个100 x 100的矩阵,其中各个数据帧的平均值相同。任何帮助都非常感谢。我已经为此停留了一段时间。

1 个答案:

答案 0 :(得分:0)

以下代码似乎可以解决问题。感谢@Gregor

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)
}