gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 22:45:32 24 4
gpt4 key购买 nike

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

我想将/path/中的所有 94 个文件读入 R 并合并所有 94 个文件以创建一个数据框“counts.table”,其中第一列包含基因名称(相同且顺序相同)所有 94 个文件的第 1 列)和第 2 到第 95 列包含来自每个单独文件的计数(即 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

Column2 包含来自样本 X 的计数,Column3 来自样本 Y 的计数,来自样本 Z 的第 4 列等。

我是否必须将每个文件单独读入 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, ...) 将所有这些列绑定(bind)在一起.最后,我们将基因名称绑定(bind)到结果。

假设:
  • 基因名称在所有文件中的顺序相同。
  • 所有文件的行数完全相同。
  • 路径目录仅包含您的基因文件。
  • 关于读取并 cbind 目录中多个文件的第二列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33072993/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com