我对R很新,只是写了这个来获取一个文件中多个时间序列的均值:
compiled<-read.table("/Users/Desktop/A/1.txt", header=TRUE)
z<-ncol(compiled)
comp_df<-data.frame(compiled[,2:z])
indmean<- rowMeans(comp_df)
每个文件中的数据如下所示:
Time A1 A2 A3 A4 A5
1 0.1 0.2 0.1 0.2 0.3
2 0.2 0.3 0.4 0.2 0.3
...
它工作正常,但我希望将它应用于许多相同性质的文件,每个文件中的时间序列数量不同。如果有人可以就如何改进上述方法提出建议,那就太好了。提前谢谢!
答案 0 :(得分:3)
您可以按照上面的步骤进行操作 - 将它们汇总到一个函数中,并将lapply
覆盖在包含要对其进行此分析的文件名称的向量上。根据您的需要,将后续分析中的数据读取分开可能有意义,也可能没有意义,这样您就可以将数据保存在工作环境中。为了简单起见,我假设您不需要后面的数据。
一般步骤如下:
1)创建要处理的文件的向量。类似的东西:
filesToProcess <- dir(pattern = "yourPatternHere")
2)将上面的代码转换为函数
FUN <- function(dat){
compiled<-read.table(dat, header=TRUE)
z<-ncol(compiled)
comp_df<-data.frame(compiled[,2:z])
indmean<- rowMeans(comp_df)
return(indmean)
}
3)lapply
FUNction到您的文件列表并分配一个新变量:
out <- lapply(filesToProcess, FUN)
4)给out
一些名字,这样你就知道了什么:
names(out) <- filesToProcess
您现在有一个命名列表,其中包含您在filesToProcess
中列出的所有文件的rowMeans。