育种数据分析之放飞自我分享 http://blog.sciencenet.cn/u/yijiaobai 关注:生物统计,数量遗传,混合线性模型,生物信息,R,Perl,Python,GWAS,GS相关方法,文章及代码

博文

R语音读取txt报错:UTF-16不支持 或者<ff><fe><63>\'多字节字符串有错

已有 574 次阅读 2020-9-14 22:00 |个人分类:R语言|系统分类:科研笔记

1. 问题描述

一个txt文件,使用R中的data.table包中的fread函数读取时,报错:

> dat = fread("test.txt")
Error in fread("test.txt") : 
  File is encoded in UTF-16, this encoding is not supported by fread(). Please recode the file to UTF-8.

使用read.table

> dat = read.table("test.txt")
Error in type.convert.default(data[[i]], as.is = as.is[i], dec = dec,  : 
  '<ff><fe><63>'多字节字符串有错
此外: Warning messages:
1: In read.table("test.txt") : line 1 appears to contain embedded nulls
2: In read.table("test.txt") : line 2 appears to contain embedded nulls
3: In read.table("test.txt") : line 3 appears to contain embedded nulls
4: In read.table("test.txt") : line 4 appears to contain embedded nulls
5: In read.table("test.txt") : line 5 appears to contain embedded nulls
6: In scan(file = file, what = what, sep = sep, quote = quote, dec = dec,  :
  embedded nul(s) found in input

2. 问题解决

用notepad++查看了一下,编码形式:「UCS-2」

在这里插入图片描述所以,在read.table中,设定编码形式:fileEncoding="UCS-2LE"

因此,修改后的代码为:

> dat = read.table("test.txt",fileEncoding = "UCS-2",header = T)
> head(dat)
               chipID   sampleID
1 202884940082_R02C04 CW63976425
2 202884940082_R03C01 CW63976831
3 202884940082_R03C02 CW63976366
4 202884940082_R03C03 CW63976367
5 202884940082_R03C04 CW63976433
6 202884940082_R04C01 CW63976615

「搞定!」

3. 解决思路总结

查看文件的编码形式,用notepad++查看,然后定义编码的类型,使用read.table读取时,定义一下fileEncoding即可。以前我以为data.table包中的fread是万能的,没想到它给出报错不支持UTF-16,最后还是用基础包中的read.table解决了问题。

真香!




http://blog.sciencenet.cn/blog-2577109-1250568.html

上一篇:线性混合模型学习笔记2:公式解释
下一篇:R语言计算玉米测交试验的配合力

0

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

数据加载中...

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2020-10-30 02:31

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部