我有这个文件(http://b7hq6v.alterupload.com/en/)我想用read.csv读R.但我无法检测到正确的编码.它似乎是一种UTF-8.我正在Windows XP机器上使用R2.12.1.

推荐答案

首先,不可能based on more general question on StackOverflow%确定地检测到文件的编码.

我为此奋斗了很多次,最终找到了非自动的解决方案:

使用iconvlist获得所有可能的编码:

codepages <- setNames(iconvlist(), iconvlist())

然后使用它们中的每一个读取数据

x <- lapply(codepages, function(enc) try(read.table("encoding.asc",
                   fileEncoding=enc,
                   nrows=3, header=TRUE, sep="\t"))) # you get lots of errors/warning here

这里重要的是了解文件的 struct (分隔符、标题).使用fileEncoding参数设置编码.只读几行

unique(do.call(rbind, sapply(x, dim)))
#        [,1] [,2]
# 437       14    2
# CP1200     3   29
# CP12000    0    1

似乎正确的一个是,有3行29列,让我们看看:

maybe_ok <- sapply(x, function(x) isTRUE(all.equal(dim(x), c(3,29))))
codepages[maybe_ok]
#    CP1200    UCS-2LE     UTF-16   UTF-16LE      UTF16    UTF16LE 
#  "CP1200"  "UCS-2LE"   "UTF-16" "UTF-16LE"    "UTF16"  "UTF16LE" 

你也可以查看数据

x[maybe_ok]

对于您的文件,所有这些编码都会返回相同的数据(部分原因是,正如您所看到的,存在一些冗余).

如果你不知道你的文件的具体内容,你需要在工作流程中使用readLines进行一些更改(例如,你不能使用fileEncoding,必须使用length而不是dim,使用更多的魔法来找到正确的文件).

R相关问答推荐

是否可以通过另一个DF的内容过滤数据帧列表?

在交互式情节中从barplot中获取值时遇到问题,在shinly中的ggplotly

使用case_when和Mutate搜索多个列以寻找条件

变量计算按R中的行更改

R形式的一维数字线/箱形图样式图表

保存包含循环和ifelse的函数的输出

基于不同组的列的相关性

在发布到PowerBI Service时,是否可以使用R脚本作为PowerBI的数据源?

在R中替换函数中的特定符号

如何通过Docker部署我的shiny 应用程序(多个文件)

在R中使用数据集名称

如何从R ggplot图片中获取SVG字符串?

如何在R中描绘#符号?

如何将网站图像添加到带有极坐标的面包裹条形图?

识别连接的子网(R-igraph)

有没有一种方法可以同时对rhandsontable进行排序和从rhandsontable中删除?

`夹心::vcovCL`不等于`AER::tobit`标准错误

在R中的数据框上使用Apply()函数时,如何保留非数字列?

如何在使用Alpha时让geom_curve在箭头中显示恒定透明度

创建新列,其中S列的值取决于该行S值是否与其他行冗余