r - 如何在 R 程序中读取格式未知且编码未知的 csv 文件?(提供的示例文件)
问题描述
我已尽力在 r 中读取 CSV 文件但失败了。我在以下 Gdrive 链接中提供了该文件的示例。
通过在文本编辑器中打开,我发现它是一个制表符分隔的文件。该文件在 Excel 中读取没有问题。但是当我尝试使用“readr”包或基本 r 包在 R 中读取它时,它会失败。不知道为什么。我尝试过不同的编码,如 UTF-8。UTF-16、UTF16LE。您能否帮我编写正确的脚本来读取此文件。目前,我正在将此文件转换为以逗号分隔的 Excel 格式,以便在 R 中读取。但我确信我做错了什么。任何帮助,将不胜感激。
谢谢阿迈勒
PS:我不明白的是excel是如何在没有提供任何参数的情况下读取文件的?我们可以在 R 中构建相同的逻辑来读取任何文件吗?
解决方案
这是一个与 Windows 相关的编码问题。
当我在 Notepad++ 中打开你的文件时,它告诉我它被编码为 UCS-2 LE BOM。将具有异常编码的文件读入 R 有一个技巧。在您的情况下,这似乎可以解决问题:
read.delim(con <- file("temp.csv", encoding = "UCS-2LE"))
(改编自R: can't read unicode text files even when specified encoding)。
顺便说一句,“CSV”代表“逗号分隔值”。此文件具有制表符分隔的值,因此您应该给它一个 .tsv 或 .txt 后缀,而不是 .csv,以避免混淆。
关于你的第二个问题,我们是否可以在 R 中构建相同的逻辑来猜测编码、分隔符和读取多种类型的文件,而无需我们明确说明编码和分隔符是什么 - 是的,这当然是可能的。我不确定它是否可取。
推荐阅读
- corda - 在 Corda 中,哪种情况下我们应该使用账户密钥而不是节点密钥来签署交易?
- ionic3 - 当我们在 Xcode 中启动应用程序时,Cordova iOS 插件失败问题
- reactjs - 为什么文本元素不在视图内垂直居中?
- javascript - 使用 Jest 测试 React Native 时如何模拟 LayoutAnimation
- python - 为什么 njit 函数在类内时不起作用,但在类外时起作用?
- c# - 使用 c# 为 UWP 应用程序折叠内容对话框内的面板
- java - MinIO 使用 Java SDK 与 KMS 集成
- javascript - javascript - 如何删除具有空值的奇怪cookie?
- python - 如何在没有工作人员(或使用计划)的情况下在 django/celery 中定期运行函数?
- liferay-7 - Liferay 未解决要求:导入包