从多个文件中选取一列并合并到R中的一个矩阵

从多个文件中选取一列并合并到R中的一个矩阵,r,dataframe,R,Dataframe,我有许多数据文件(*.dat)包含列(所有文件的格式都相同),我希望选取每个文件的一列(所有文件中的位置都相同),并将它们合并到数据框中 你能告诉我在R有可能吗?怎么做 我有大约200个文件(23x7)。这是我的数据文件: 12000.0000 77.17 59.09 0.17 1.82 59.09 32.4564 6000.0000 77.52 32.68 0.11 1.83 32.68 17.

我有许多数据文件(*.dat)包含列(所有文件的格式都相同),我希望选取每个文件的一列(所有文件中的位置都相同),并将它们合并到数据框中

你能告诉我在R有可能吗?怎么做


我有大约200个文件(23x7)。这是我的数据文件:

  12000.0000       77.17   59.09    0.17        1.82   59.09   32.4564
   6000.0000       77.52   32.68    0.11        1.83   32.68   17.8731
   3000.0000       77.80   18.98    0.12        1.83   18.98   10.3449
   1500.0000       77.99   11.23    0.12        1.84   11.23    6.1084
    750.0000       78.13    6.93    0.15        1.84    6.93    3.7636
    375.0000       78.21    4.53    0.28        1.84    4.53    2.4552
    187.5000       78.27    3.37    0.51        1.85    3.37    1.8253
     93.7500       78.36    2.84    0.99        1.85    2.84    1.5387
     46.8750       78.48    2.04    1.37        1.85    2.04    1.1049
     23.4375       78.53    0.98    0.17        1.85    0.98    0.5291
     11.7188       78.52   -0.23    0.15        1.85   -0.23   -0.1242
      5.8594       78.48   -0.74    0.08        1.85   -0.74   -0.3973
      2.9297       78.44   -0.83    0.03        1.85   -0.83   -0.4499
      1.4648       78.43   -1.49    0.06        1.85   -1.49   -0.8059
      0.7324       78.40   -3.20    0.15        1.85   -3.20   -1.7297
      0.3662       78.24   -5.33    0.04        1.85   -5.33   -2.8879
      0.1831       77.94   -6.84    0.07        1.84   -6.84   -3.7212
      0.0916       77.71   -5.76    0.08        1.83   -5.76   -3.1449
      0.0458       77.35   -3.57    0.11        1.82   -3.57   -1.9588
      0.0229       77.44   -0.88    0.13        1.83   -0.88   -0.4810
      0.0114       77.31    0.72    0.23        1.82    0.72    0.3928
      0.0057       77.59    1.63    0.51        1.83    1.63    0.8929
      0.0029       77.61    0.34    2.65        1.83    0.34    0.1841

我想将第6列与其他文件中的第6列合并,形成一个矩阵(23x200)。

如果需要文件的第三列,该列具有标题和逗号分隔符:

d <- read.table("file.dat", colClasses = c("NULL", "NULL", "numeric", "NULL"), sep = ",")

d如果需要文件的第三列,该列具有标题和逗号分隔符:

d <- read.table("file.dat", colClasses = c("NULL", "NULL", "numeric", "NULL"), sep = ",")
d另一种方法(基于@mdsumner的答案)是(未经测试):

#获取文件列表
my.file.list另一种方法(基于@mdsumner的答案)是(未经测试):

#获取文件列表

my.file.list您应该添加一个文件示例,以便我们知道分隔符是什么,它是否有标题,以及如何确保每个文件中的行数相同,以及所需列的类是什么,因为使用“colClasses”这是一种只读取某些列的简洁方法。您应该添加一个文件示例,以便我们知道分隔符是什么,它是否有标题,以及如何确保每个列中的行数相同,以及所需列的类是什么,因为使用“colClasses”非常感谢,我已经添加了示例文件。
colClasses=c(“NULL”,“NULL”,NA,“NULL”)
非常通用。为了构建矩阵,我遇到了以下错误:“data.frame中的错误(…,check.names=FALSE):参数意味着不同的行数:0,23”。修复它?非常感谢,我已经添加了示例文件。
colClasses=c(“NULL”,“NULL”,NA,“NULL”)
非常通用。为了构建矩阵,我遇到了以下错误:“data.frame中的错误(…,check.names=FALSE):参数意味着不同的行数:0,23”。要修吗?
mat <- NULL
for (i in 1:length(fs)) {
 mat <- cbind(mat, read.table(fs[i], colClasses = c("NULL", "NULL", "numeric", "NULL"), sep = ",")
}
d0 <- read.table(fs[1], colClasses = c("NULL", "NULL", "numeric", "NULL"), sep = ",")[,1]
nr <- nrow(d0)
mat <- matrix("numeric", nrow = nr, ncol = length(fs))
for (i in 1:length(fs)) {
 mat[,i] <- read.table(fs[i], colClasses = c("NULL", "NULL", "numeric", "NULL"), sep = ",")[,1]
}
# get a list of files
my.file.list <- list.files(pattern = "dat$")
# for each file, run read.table and select only the first column
my.list <- lapply(X = my.file.list, FUN = function(x) {
            read.table(x, colClasses = c("NULL", "NULL", "numeric", "NULL"), sep = ",")[,1]
        })
# merge columns that are in a list into one data.frame
my.df <- do.call("cbind", my.list)