【问题标题】:rbind all given columns within a listrbind 列表中的所有给定列
【发布时间】:2015-07-22 09:03:54
【问题描述】:

我正在将可变数量的 .csv 文件读取到一个列表中,这些文件都包含在当前工作目录中,并且想要 rbind 每个这些 .csv 文件的第二列。

工作目录中的文件如下所示:

150601_0001.csv
150601_0002.csv
150601_0003.csv
etc.

我有以下代码将它们全部读入目录中任意给定数量文件的列表中: (代码来自here

myfiles <- dir(pattern = "\\.(csv|CSV)$", full.names = TRUE) # get filenames and paths
myfiles_data <- lapply(myfiles, data.table::fread) # read data from files, quickly
head(myfiles_data[[1]]) # validate file reading
names(myfiles_data) <- myfiles # assign names to list items

到目前为止,这一切都很好,我将所有数据放入一个漂亮的列表中:

> myfiles_data
$`./150601_0001.csv`
       X     Y Z
  1:   1 67.81 1
  2:   2 68.52 1
  3:   3 69.66 1
 ---            
250: 250 50.02 1
251: 251 50.58 1
252: 252 51.16 1

$`./150601_0002.csv`
       X     Y Z
  1:   1 70.77 2
  2:   2 70.54 2
  3:   3 70.47 2
 ---            
250: 250 51.00 2
251: 251 51.17 2
252: 252 51.43 2

$`./150601_0003.csv`
       X     Y Z
  1:   1 68.32 3
  2:   2 67.80 3
  3:   3 67.33 3
 ---            
250: 250 50.58 3
251: 251 50.68 3
252: 252 50.77 3

现在我想在每个数据集的第二列上进行 rbind。下面的代码给了我一个只有第二列的列表(数据是为了视觉目的而缩写的):

> lapply(myfiles_data, `[[`, 2)
$`./150601_0001.csv`
  [1] 67.81 68.52 69.66 ...
  ...
[241] ... 52.85 51.85 50.90

$`./150601_0002.csv`
  [1] 70.77  70.54  70.47 ...
  ...
[241] ... 51.00  51.17  51.43

$`./150601_0003.csv`
  [1] 68.32 67.80 67.33 ...
  ...
[241] ... 50.58 50.68 50.77

如何一次将 rbind() 应用于所有这些?

【问题讨论】:

  • 你也可以Reduce(rbind, lapply(myfiles_data, [[, 2))t(data.frame(lapply(myfiles_data, [[, 2)))
  • t() 解决方案正在运行,非常感谢 :)
  • 实际上这并没有给我一个有效的矩阵:&gt; attributes(z) $dim [1] 54 252 &gt; attributes(z1) $dim [1] 55 252 $dimnames $dimnames[[1]] NULL $dimnames[[2]] NULL(这是z代表rbind()在逐个输入的csv文件上手工完成,z1代表自动列表方法+你的t()解决方案)

标签: r list rbind read.csv


【解决方案1】:

没有添加评论的声誉,所以添加答案

尝试将所有数据重新绑定到一个数据帧中

Output<-do.call(rbind, list)

【讨论】:

    【解决方案2】:

    怎么样

    unlist(lapply(myfiles_data, `[[`, 2))
    

    【讨论】:

      猜你喜欢
      • 2013-05-08
      • 2021-08-21
      • 2010-12-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-19
      • 1970-01-01
      • 2017-01-15
      相关资源
      最近更新 更多