【问题标题】:Combining dataframes into a list将数据框组合成一个列表
【发布时间】:2014-11-04 17:47:37
【问题描述】:

我正在尝试将多个数据帧存储在一个列表中。但是,在某些时候,数据框最终会转换为列表,因此我最终会得到一个列表列表。

我真正想做的就是将我所有的数据框以某种结构放在一起。

这是失败的代码:

all_dframes <- list() # initialise a list that will hold a dataframe as each item
for(file in filelist){ # load each file
    dframe <- read.csv(file) # read CSV file
    all_dframes[length(all_dframes)+1] <- dframe # add to the list
}

如果我现在调用,例如,class(all_dframes[1]),我会得到“列表”,而如果我调用 class(dframe),我会得到“data.frame”!

【问题讨论】:

  • 你可以做到files &lt;- list.files(pattern=".csv"); lapply(files, function(x) read.csv(x, header=TRUE))
  • library(data.table); files &lt;- lapply(list.files(pattern=".csv"), fread)

标签: r list dataframe


【解决方案1】:

当然,all_dframes[1] 的类是list,因为all_dframes 是一个列表。函数[ 返回列表的一个子集。在此示例中,返回列表的长度为 1。如果要提取数据框,则必须使用[[,即all_dframes[[1]]

【讨论】:

  • 哎呀! R 的[]/[[]] 区别。讨厌它。谢谢斯文。
【解决方案2】:

我可以建议一下吗:

library(data.table)
all_dframes <- vector("list",length(filelist))
for(i in 1:length(filelist)){ # load each file
       all_dframes[[i]]<-fread(filelist[i])
}

这是你需要的吗?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-24
    • 2015-08-27
    • 2020-01-01
    • 1970-01-01
    • 2015-08-26
    • 2018-08-12
    相关资源
    最近更新 更多