我在一个目录中有94个制表符分隔文件,没有标题' / path /'在第一列中有基因名称,在第二列中有计数。有23000行。
我想阅读/ path / in中找到的所有94个文件,并合并所有94个文件以创建单个数据框&count; count.table'其中第一列包含基因名称(在所有94个文件的第1列中相同且顺序相同),第二列包含每个单独文件的计数(即94个文件中每个文件的第2列,即独特的数字)。最终的count.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
Column2包含样品X的计数,样品Y的Column3计数,样品Z的第4列等。
我是否必须单独阅读R中的每个文件,然后通过将每个文件的第二列添加到cbind来合并它们以创建' counts.table'?提前谢谢。
答案 0 :(得分:4)
评论太长了。
这样的事情应该有效。
# 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, ...)
以列为单位将所有这些列绑定在一起。最后,我们将基因名称绑定到结果。
假设: