我使用read.delim(filename)而没有任何参数来读取R中的制表符分隔文本文件.
df = read.delim(file)
Run Code Online (Sandbox Code Playgroud)
这按预期工作.现在我有一个奇怪的错误消息,我无法理解它:
Error in type.convert(data[[i]], as.is = as.is[i], dec = dec, na.strings = character(0L)) :
invalid multibyte string at '<fd>'
Calls: read.delim -> read.table -> type.convert
Execution halted
Run Code Online (Sandbox Code Playgroud)
任何人都可以解释多字节字符串是什么?fd是什么意思?还有其他方法可以读取R中的选项卡文件吗?我有列标题和行,没有所有列的数据.
小智 19
我对程序e-prime(edat - > SPSS转换)中的文件有一个类似的奇怪问题,但后来我发现你可以使用许多额外的编码.这对我有用:
tbl <- read.delim("dir/file.txt", fileEncoding="UCS-2LE")
Run Code Online (Sandbox Code Playgroud)
Ram*_*han 14
如果你想要一个R解决方案,这里有一个小的便利功能,我有时会用来找到有问题(multiByte)字符潜伏的地方.请注意,它是打印内容的下一个字符.这样print可行,因为它可以正常工作,但substr在存在多字节字符时会抛出错误.
find_offending_character <- function(x, maxStringLength=256){
print(x)
for (c in 1:maxStringLength){
offendingChar <- substr(x,c,c)
#print(offendingChar) #uncomment if you want the indiv characters printed
#the next character is the offending multibyte Character
}
}
string_vector <- c("test", "Se\x96ora", "works fine")
lapply(string_vector, find_offending_character)
Run Code Online (Sandbox Code Playgroud)
我修复了那个角色并再次运行它.希望能帮助遇到invalid multibyte string错误的人.