合并目录中所有文件的每第 n 列

Merging every nth column of all files in a directory

一个目录下有22个文本文件,用制表符分隔。实际上,我只需要每个文本文件的第 6 列,然后将它们合并到一个文件中。当我在下面写这些命令时;

filenames = list.files()
my.list = lapply(X = filenames, FUN = function(x) {read.table(x, sep = "\t")[,6]})
my.df <- do.call("cbind", my.list)

作为这些命令的结果;我有一个包含 22 列的 my.df 文件,但奇怪的是,该列中的值不是来自 txt 文件。我找不到这些数据的来源。

读取文件时,第 6 列被转换为因子。我们可以将字符列保留为字符:

my.list = lapply(X = filenames, FUN = function(x) {
  read.table(x, sep = "\t", stringsAsFactors = FALSE)[,6]})
my.df <- do.call("cbind", my.list)

或者在对第 6 列进行子集化时,我们可以将 data.frame 保留为 data.frame:

my.list = lapply(X = filenames, FUN = function(x) {
  read.table(x, sep = "\t")[, 6, drop = FALSE]})
my.df <- do.call("cbind", my.list)