2015-08-28 133 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