2015-08-28 80 views
0

假设我在一个名为“我的数据”的文件夹中有一组CSV文件,该文件夹是我的工作目录中的一个文件夹。 CSV文件时矩阵和看起来像:“我的成绩”动态创建来自其他CSV文件的CSV文件R

> a 
    [,1] [,2] [,3] [,4] 
[1,] 3 3 3 3 
[2,] 3 3 3 3 
[3,] 3 3 3 3 
[4,] 3 3 3 3 
> b 
    [,1] [,2] [,3] [,4] 
[1,] 1 1 1 1 
[2,] 2 2 2 2 
[3,] 1 1 1 1 
[4,] 2 2 2 2 
> c 
    [,1] [,2] [,3] [,4] 
[1,] 3 3 3 3 
[2,] 9 9 9 9 
[3,] 3 3 3 3 
[4,] 9 9 9 9 

比方说,我在我的所谓工作目录的另一个文件夹其中我想创建另一个CSV文件(称为“my_results”),其中包含对“我的数据”中的CSV文件执行分析的结果。例如,如果我计算出的平均值和A,B的标准差,而C“my_results”看起来像:

> my_results 
    mean sd 
a 3.0 0.00 
b 1.5 0.52 
c 6.0 3.10 

的想法是新的CSV中的每一行会对应的CSV之一“我的数据“并且新CSV的列将对应于特定的分析运行。谢谢。

+2

'setwd( “MYDATA”); out < - do.call(“rbind”,lapply(dir(),function(x)dosomething(data = read.csv(x)))); write.csv(out,file =“../myresults/my_results.csv”); setwd(“..”)' – Thomas

回答

1

lapply是你的朋友:

my_data = lapply(list.files("my data", "*.csv"), read.csv) 
my_result = lapply(my_data, your_fun()) 
write.csv(dplyr::bind_rows(my_result), "my data/my results.csv") 

你得到包convienient bind_rows功能dplyr

+0

我很抱歉,但实际上似乎没有正常工作,每次我运行第一行时,所有它产生的是'list()'任何想法? – costebk08

+0

查看零件:list.files(“我的数据”,“* .csv”)。它应该为您提供“我的数据”目录中以“.csv”结尾的所有文件的列表。目录“我的数据”存在于你的wd?我是你在list.files()函数中指定完整路径。 – MarkusN

+0

它没有包含“* .csv”,因为文件夹中的所有文件都是csv文件,但是“我的数据”是wd – costebk08