2015-10-12 78 views
1

我有94個製表符分隔的文件,沒有標題,在單個目錄'/路徑/'與基因名稱在第一列和計數在第二列。有23000行。閱讀並cbind目錄中的多個文件的第二列

我想讀取/ path/in到R中找到的所有94個文件,併合並所有94個文件以創建單個數據框'counts.table',其中第一列包含基因名稱(相同和在所有94個文件的列1中的相同順序)和第二至第九十五列包含來自每個單獨文件(即,94個文件中的每一個的第2列,它們是唯一編號)的計數。最終counts.table數據框將有23000行和95列。
理想情況下是這樣的:

Column1 Column2 Column3 Column4... to column 95 
gene a  0  4  3 
gene b  4  9  9 
gene c  3  0  8 
... 
to row 23000 

列2包含樣本X計數,從欄3樣本Y,從樣本Z 4列等統計

我一定要讀取每個文件在與R單獨和然後通過添加每個文件的第二列與cbind來創建'counts.table'來合併它們全部?提前致謝。

+1

所有文件中的基因名稱是否相同? – jlhoward

回答

3

太長的評論。

這樣的事情應該工作。

# not tested 
files <- list.files(path="./path") 
genes <- read.table(files[1], header=FALSE, sep="\t")[,1]  # gene names 
df <- do.call(cbind,lapply(files,function(fn)read.table(fn,header=FALSE, sep="\t")[,2])) 
df <- cbind(genes,df) 

list.files(...)將指定路徑中所有文件的名稱抓取到一個向量中。然後我們提取基因名稱:第一個文件的第一列(可以是任何文件)。然後我們使用lapply(files, function(fn)...)構建數據框架列表,其中包含每個文件的第二列,並使用do.call(cbind, ...)按列方式將所有這些組合在一起。最後,我們將基因名稱與結果綁定。

假設:

  1. 基因名稱在所有文件的順序相同。
  2. 所有文件具有完全相同的行數。
  3. 路徑目錄只有你的基因文件。
+0

這很好,謝謝你的幫助。爲了得到基因名,我讀了一個原始文件並刪除了計數(第二列):genes < - 'tabdelimfile'[,1,drop = FALSE]。然後我使用row.names(df)< - 基因[,1]。如果基因存儲爲row.names而不是第一列,結果會更好。 – rvann

+0

很高興爲你效勞。由於你是新手,請[閱讀此](http://stackoverflow.com/help/someone-answers)。 – jlhoward

+0

謝謝你的擡頭。檢查並投票。 – rvann