首页 > 解决方案 > 循环读取 csv 数据

问题描述

f_ep = "/Users/kmein/Desktop/project/data/csv-files/17SK_U1.csv"   

listtxt_ep<-list.files(path = ep_dir, pattern="*.csv", full.names = T) 

d_ep = data.frame()
for(f_ep in listtxt_ep){
  tmp_ep <- read.delim(f_ep,header = T,row.names = NULL,fill = T) %>% as.data.frame(stringsAsFactors = F)
  d_ep <- bind_rows(d_ep, tmp_ep) 
}

我想将一堆 csv 文件读入 R。

我想要一份包含所有 csv 文件的文档。但它给了我这样的错误:

make.names 中的错误(col.names,唯一 = TRUE):无效的多字节字符串 1

csv 文件是一个表格。

标签: rcsv

解决方案


这是一种过去证明对我来说非常有效的方法:

f_ep  "/Users/kmein/Desktop/project/data/csv-files/17SK_U1.csv"   

listtxt_ep <- list.files(path = ep_dir, pattern = "*.csv", full.names = TRUE)

library(data.table)
df_list <- lapply(listtxt_ep, function(f) {
  # message("now reading file:", f) # optionally display status message
  out <- fread(f)
  out$source <- f
  return(out)
})

df <- rbindlist(df_list)

您也可以使用直接绑定列表,rbindlist(lapply(但我更喜欢这种方式,因为它让我有机会在绑定之前检查摄取的 csv 文件(以防列数不同等)。


推荐阅读