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

时间:2017-11-30 12:17:06

标签: r dataframe lapply do.call

目录中的选项卡分隔有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文件。我找不到这些数据的来源。

1 个答案:

答案 0 :(得分:1)

读取文件时,第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)