如何检查.csv-File是否有逗号或分号作为分隔符?

Val*_*ing 3 csv r

正如标题所说:

我必须自动阅读很多.csv文件.有些人使用逗号作为分隔符,然后我接受命令read.csv().

有些分号作为分隔符,然后我使用read.csv2().

我想编写一段代码来识别.csv-File是否有逗号或分号作为分隔符(在我阅读之前),这样我就不必每次都更改代码.我的方法是这样的:

try to read.csv("xyz")
if error 
read.csv2("xyz")
Run Code Online (Sandbox Code Playgroud)

有可能吗?有人曾经这样做过吗?如何在没有实际看到错误的情况下检查是否有错误?

我希望这个问题很清楚.对不起我的英语不好

提前致谢

G. *_*eck 8

这里有一些方法假设文件格式的唯一区别是分隔符是分号还是十进制是逗号或分隔符是逗号而小数是一个点.

1)fread 正如freaddata.table包中的注释中所提到的,包将自动检测公共分隔符的分隔符,然后使用它检测到的分隔符读取文件.这还可以处理格式中的某些其他更改,例如自动检测文件是否具有标题.

2)grepl 查看第一行,看看它是否有逗号或分号,然后重新读取该文件:

L <- readLines("myfile", n = 1)
if (grepl(";", L)) read.csv2("myfile") else read.csv("myfile")
Run Code Online (Sandbox Code Playgroud)

3)count.fields 如果我们可以假设每个文件中存在多个字段,那么当sep =";"时有一个字段 我们知道分号不是分隔符.

L <- readLines("myfile", n = 1)
numfields <- count.fields(textConnection(L), sep = ";")
if (numfields == 1) read.csv("myfile") else read.csv2("myfile")
Run Code Online (Sandbox Code Playgroud)

更新已 添加(3)并对所有三个进行了改进.