【问题标题】:Binding rows of multiple data frames into one data frame in R在R中将多个数据帧的行绑定到一个数据帧中
【发布时间】:2020-11-24 11:48:59
【问题描述】:

我有一个名为 dfs 的文件路径向量,我想为这些文件创建一个数据帧并将它们绑定到一个巨大的数据帧中,所以我做了这样的事情:

for (df in dfs){
  clean_df <- bind_rows(as.data.table(read.delim(df, header=T, sep="|")))
  return(clean_df)
} 

但仅返回数据框中的最后一项。我该如何解决这个问题?

【问题讨论】:

标签: r function rbind


【解决方案1】:

问题是您一次只能将一个文件传递给函数read.delim()。所以解决方案是使用lapply() 之类的函数来读取 df 中指定的每个文件。

这里是一个例子,你可以找到你的问题here的其他答案。

library(tidyverse)

df <- c("file1.txt","file2.txt")
all.files <- lapply(df,function(i){read.delim(i, header=T, sep="|")})
clean_df <- bind_rows(all.files)
(clean_df)

请注意,您不需要函数return(),将 clean_df 放在括号中会提示 R 打印变量。

【讨论】:

    【解决方案2】:

    我不确定你的文件格式,所以我以常见的 .csv 为例。将a * i 部分替换为实际读取所有不同的文件,而不仅仅是生成模型数据。

    files = list()
    for (i in 1:10) {
      a = read.csv('test.csv', header = FALSE)
      a = a * i
      files[[i]] = a
    }
    
    
    full_frame = data.frame(data.table::rbindlist(files))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-09-04
      • 2021-04-28
      • 2017-01-20
      • 1970-01-01
      • 2020-09-26
      • 1970-01-01
      • 1970-01-01
      • 2020-12-14
      相关资源
      最近更新 更多