2015-06-19 165 views
1

我有一個數據集,它有5列(列,從0到4)命名爲data1。我將第2,3列添加到一起,並將data1的結果標準化。我將做到以下幾點:對R語言中的不同數據集重複操作

final_data = my_norm_function(data1[2]+data1[3]) 
write.table(final_data) 

但我希望做同樣的操作,其他的數據集,說data2data3data4,等等 - 從每個數據集得到兩列出來,把它們相加,規範化結果並保存。有什麼循環可以用來做到這一點?然後我將得到對應於data1,data2,data3的保存數據集。

+0

一種辦法可能是使用'eapply'如果你想要的功能適用於所有對象在你的工作空間或特定的環境。 – SabDeM

+2

您可以將所有數據集存儲爲列表中的項目('my_list < - list(data1,data2 ...)'),然後將您的函數應用於列表中的每個元素,可以使用'lapply'或者'for '循環 – arvi1000

+0

我現在正在這樣做。但我想創建一個大列表效率較低?說data1有數百列,我只需要添加第2,3列。我們可以將2,3加載到內存中,我們可以嗎? – cppython

回答

1

當然,這裏有一個for環版本:

for(i in c("vector of file names")){ 
    datain<-read.table(i) 
    final_data = my_norm_function(datain[2]+datain[3]) 
    write.table(final_data,file=paste("final_data",i)) 
} 
+0

謝謝。這是一個好方法。但是我已經加載了這些數據。所以我不想循環閱讀過程,這使得它慢。我已經有數據集1,數據集2在內存中。 – cppython

+0

在這種情況下,刪除read.table行並將文件名的矢量更改爲數據名稱的矢量。 – jeremycg

+0

每個循環給我一個最後一列。我想追加他們。例如,第一次運行給我column1 = [1],[2],[3],然後column2 = [4],[5],[6],我想將它們保存在一個csv表中,列1 = 1,2,3,然後列2,4,5,6而不是單個文件,如何在for循環中綁定列?非常感謝! – cppython