r - 如何检查 CSV 文件是否有逗号或分号作为分隔符?

标签 r csv import read.csv

我必须自动读取大量 CSV 文件。有些有逗号作为分隔符,然后我使用命令read.csv() .
有些有分号作为分隔符,那我用read.csv2() .
我想编写一段代码来识别 CSV 文件是否有逗号或分号作为分隔符(在我阅读之前),这样我就不必每次都更改代码。
我的方法是这样的:

try to read.csv("xyz")
if error 
read.csv2("xyz")
这样的事情可能吗?以前有人这样做过吗?
如何在没有实际看到的情况下检查是否有错误?

最佳答案

这里有几种方法,假设文件格式之间的唯一区别是分隔符是分号,小数点是逗号,还是分隔符是逗号,小数点是点。
1) fread 正如注释中提到的,data.table 包中的 fread 将自动检测常用分隔符的分隔符,然后使用它检测到的分隔符读取文件。这也可以处理某些其他格式的更改,例如自动检测文件是否有标题。
2) grepl 查看第一行是否有逗号或分号,然后重新读取文件:

L <- readLines("myfile", n = 1)
if (grepl(";", L)) read.csv2("myfile") else read.csv("myfile")
3) count.fields 我们可以假设分号,然后计算第一行中的字段。如果有一个字段,则以逗号分隔,如果没有,则以分号分隔。
L <- readLines("myfile", n = 1)
numfields <- count.fields(textConnection(L), sep = ";")
if (numfields == 1) read.csv("myfile") else read.csv2("myfile")
更新 添加 (3) 并对所有三个进行了改进。

关于r - 如何检查 CSV 文件是否有逗号或分号作为分隔符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33417242/

相关文章:

r - R中获取向量中元素频率向量的最简单方法

r - 代码问题: Error in `[.data.frame` (result,,c(setdiff(names(result),names(data)),:选择了未定义的列

json - 如何在 Stackblitz 项目中加载 JSON?

.net - VB.NET 项目属性命名空间与导入语句?

r - 当绘图已经绘制时是否可以更改 ylim 和 xlim ?

r - 使用 r Markdown、kable 和 kableExtra 渲染表格时出现问题

python - 将 csv 列加载到 numpy 内存映射中(快速)

python - 将CSV文件数据读取为命名元组行的pythonic方法是什么?

python - 如何使用 Python csv 阅读器循环遍历特定范围的行?

database - 将初始数据导入到 Spring Boot 应用程序中