【发布时间】:2012-03-05 09:44:05
【问题描述】:
我正在对特定文件夹中的所有文件进行一项相对简单的分析,并将其放入一个函数中。我想知道是否有人有任何提示可以帮助我在多个不同文件夹上自动执行该过程。
- 首先,我想知道是否有办法将特定文件夹中的所有文件直接读取到 R 中。我相信以下命令会列出所有文件:
files <- (Sys.glob("*.csv"))
...我从Using R to list all files with a specified extension找到的
然后下面的代码将所有这些文件读入 R.
listOfFiles <- lapply(files, function(x) read.table(x, header = FALSE))
…来自Manipulating multiple files in R
但这些文件似乎是作为一个连续列表而不是单个文件读入的……如何更改脚本以将特定文件夹中的所有 csv 文件作为单个数据帧打开?
-
其次,假设我可以单独读取所有文件,我如何一次完成所有这些数据帧的功能。例如,我创建了四个小数据框,以便说明我想要什么:
Df.1 <- data.frame(A = c(5,4,7,6,8,4),B = (c(1,5,2,4,9,1))) Df.2 <- data.frame(A = c(1:6),B = (c(2,3,4,5,1,1))) Df.3 <- data.frame(A = c(4,6,8,0,1,11),B = (c(7,6,5,9,1,15))) Df.4 <- data.frame(A = c(4,2,6,8,1,0),B = (c(3,1,9,11,2,16)))
我还编了一个示例函数:
Summary<-function(dfile){
SumA<-sum(dfile$A)
MinA<-min(dfile$A)
MeanA<-mean(dfile$A)
MedianA<-median(dfile$A)
MaxA<-max(dfile$A)
sumB<-sum(dfile$B)
MinB<-min(dfile$B)
MeanB<-mean(dfile$B)
MedianB<-median(dfile$B)
MaxB<-max(dfile$B)
Sum<-c(sumA,sumB)
Min<-c(MinA,MinB)
Mean<-c(MeanA,MeanB)
Median<-c(MedianA,MedianB)
Max<-c(MaxA,MaxB)
rm(sumA,sumB,MinA,MinB,MeanA,MeanB,MedianA,MedianB,MaxA,MaxB)
Label<-c("A","B")
dfile_summary<-data.frame(Label,Sum,Min,Mean,Median,Max)
return(dfile_summary)}
我通常会使用以下命令将函数应用于每个单独的数据帧。
Df1.summary
有没有办法代替将函数应用于所有数据框,并使用汇总表中数据框的标题(即 Df1.summary)。
非常感谢,
凯蒂
【问题讨论】: