读取r中的多个文本文件而没有相同的分隔符

时间:2017-01-16 22:20:22

标签: r if-statement text-files

在我喜欢24 * .csv文件的文件夹中,它们具有相同的结构,我想创建一个文件。问题是并非所有数据框都以相同的方式读取,因为对于某些文件,sep参数是","以及其他人";"。 我应该使用什么方法?我想我可能会提出一个if语句。

2 个答案:

答案 0 :(得分:2)

您可以检查数据框的第一行,看它是否有逗号或分号作为分隔符,并在调用ifelse语句之后:

L <- readLines('DataFrame', n = 1)
if (grepl(";", L)) read.csv2("DataFrame") else read.csv("DataFrame")

答案 1 :(得分:1)

以下简单的代码完成了工作,而且非常快。

library(dplyr)  
library(data.table)
files <- list.files(path = "Ariel/Trips/", full.names = T)
f <- list()
for (i in 1:length(files)) {
f[[i]] <- fread(files[i], header = T, colClasses = c("factor", "factor", "factor", "factor",
                                                   "factor", "factor", "factor", "factor",
                                                   "factor", "factor", "factor", "factor",
                                                   "factor", "integer", "integer", "integer",
                                                   "factor", "numeric", "numeric", "integer",
                                                   "factor", "factor", "factor", "factor",
                                                   "factor", "factor", "factor", "factor"))
}
trip <- bind_rows(f)
fwrite(x = trip, file = "trip.csv", quote = T, na = NA, row.names = F)