在读入R之前检查文件是如何分隔的

时间:2013-10-15 17:08:46

标签: r import

我有一个文件列表(不是由我制作),由于某些原因,它们都被标记为“.csv”,即使有些是csv,有些是制表符分隔的。因此,当我尝试在R中读取它们时,我必须手动指定分隔符。除非有人知道在我收到错误的文件之前是否有办法检查这个。

2 个答案:

答案 0 :(得分:9)

应该把这个放在答案中......

data.table 中的fread功能会尝试猜测正确的分隔符。它可能并不完美,但它可能会处理大多数简单的案例。

答案 1 :(得分:6)

由于标签不太可能存在于数据中,除非作为分隔符可以将其作为通常正确的测试:

dat <- if( "\t" %in% strsplit(readLines("path/fil.csv", n=1)[1], split="")[[1]] ) { 
     read.table("path/fil.csv", sep="\t") }else{
     read.table("path/fil.csv", sep=",") }

(仅处理“\ t”或“,”的情况,如上所述。)测试:

> dat <- if( "\t" %in% strsplit(readLines(textConnection("a\tb\tc\nd\te\tf"), n=1)[1], split="")[[1]] ) { 
+      read.table(textConnection("a\tb\tc\nd\te\tf"), sep="\t") }else{
+      read.table(textConnection("a,b,c\nd,e,f"), sep=",") }
> dat
  V1 V2 V3
1  a  b  c
2  d  e  f