读取并绑定目录中多个文件的第二列

Read and cbind second column of multiple files in directory

我有 94​​ 个制表符分隔的文件,没有 header,在单个目录“/path/”中,第一列是基因名称,第二列是计数。有 23000 行。

我想将 /path/ 中找到的所有 94 个文件读入 R 并合并所有 94 个文件以创建单个数据框 'counts.table' 其中第一列包含基因名称(相同和在所有 94 个文件的第 1 列中的顺序相同),ninety-fifth 列的第二个包含每个单独文件的计数(即 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 的计数,第 4 列来自样本 Z,等等。

我是否必须将每个文件单独读入 R,然后通过使用 cbind 添加每个文件的第二列来合并它们以创建 'counts.table'?提前致谢。

评论太长了。

像这样的东西应该有用。

# 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(...) 将指定路径中的所有文件的名称抓取到一个向量中。然后我们提取基因名称:第一个文件的第 1 列(可以是任何文件)。然后我们使用 lapply(files, function(fn)...) 构建一个 data.frames 的列表,其中包含每个文件的第二列,并使用 do.call(cbind, ...) 按列将所有这些绑定在一起。最后,我们将基因名称绑定到结果。

假设:

  1. 基因名称在所有文件中的顺序相同。
  2. 所有文件的行数完全相同。
  3. 路径目录只有你的基因文件。