首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >tolower()中出现错误无效的多字节字符串

tolower()中出现错误无效的多字节字符串
EN

Stack Overflow用户
提问于 2012-11-02 08:33:06
回答 6查看 27.2K关注 0票数 17

这是当我试图对一个无法更改(至少不能手动更改-太大)的文件中的字符向量运行tolower()时收到的错误。

Error in tolower(m) : invalid multibyte string X

似乎法国公司名称是É字符的问题所在。尽管我没有调查过所有这些问题(也不可能手动进行调查)。

这很奇怪,因为我的想法是编码问题应该在read.csv()过程中发现,而不是在事后的操作过程中。

有没有一种快速删除这些多字节字符串的方法?或者,也许是一种识别和转换的方法?或者干脆完全忽略它们?

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2012-11-02 11:50:45

下面是我如何解决我的问题的:

首先,我在一个texteditor (在本例中是Geany)中打开原始数据,单击属性并标识Encoding类型。

之后我使用了iconv()函数。

代码语言:javascript
运行
复制
x <- iconv(x,"WINDOWS-1252","UTF-8")

更具体地说,我对导入的CSV中data.frame的每一列都执行了此操作。重要的是要注意,我在read.csv()调用中设置了stringsAsFactors=FALSE

代码语言:javascript
运行
复制
dat[,sapply(dat,is.character)] <- sapply(
    dat[,sapply(dat,is.character)],
    iconv,"WINDOWS-1252","UTF-8")
票数 22
EN

Stack Overflow用户

发布于 2019-01-18 23:49:21

我也收到了同样的错误。然而,在我的例子中,它不是在我读取文件时,而是在处理它时稍晚一点。我意识到我得到了这个错误,因为文件从一开始就没有使用正确的编码读取。

我找到了一个更简单的解决方案(至少对我的情况而言),并想分享一下。我简单地添加了编码,如下所示,它起作用了。

read.csv(<path>, encoding = "UTF-8")

票数 7
EN

Stack Overflow用户

发布于 2014-07-23 03:26:45

我知道这个问题已经得到了回答,但我认为我应该分享我的解决方案,因为我经历了同样的事情。

在我的示例中,我使用了stringr包中的函数str_trim()来修剪字符串开头和结尾的空格。

com$uppervar<-toupper(str_trim(com$var))

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13187605

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档