我有一个文件列表(不是由我制作),由于某些原因,所有文件都标记为".csv",即使有些是csv,有些是制表符分隔的.因此,当我尝试在R中读取它们时,我必须手动指定分隔符.除非有人知道在我收到错误的文件之前是否有办法检查这个.
由于标签不太可能在数据中,除非作为分隔符可以将其作为通常正确的测试:
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=",") }
Run Code Online (Sandbox Code Playgroud)
(如上所述,仅处理"\ 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
Run Code Online (Sandbox Code Playgroud)