我有一个文件列表(不是我制作的),出于某种原因,这些文件都被标记为(“.csv”),即使有些是 csv,有些是制表符分隔的。因此,当我尝试在 R 中阅读它们时,我将不得不手动指定分隔符。除非,有人知道在我读入一个损坏的文件之前是否有办法检查这一点。
问问题
335 次
2 回答
9
应该把这个放在答案中......
fread
包data.table中的函数尝试猜测正确的分隔符。它可能并不完美,但它可能会处理大多数简单的情况。
于 2013-10-15T17:18:03.840 回答
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
于 2013-10-15T17:29:08.093 回答