17

これは、変更できないファイルから文字ベクトルを実行しようとしたときに受け取るエラーですtolower()(少なくとも、手動では変更できません - 大きすぎます)。

Error in tolower(m) : invalid multibyte string X

Éキャラクターの問題はフランスの社名のようです。私はそれらすべてを調査したわけではありませんが(手動で調査することもできません)。

奇妙なことに、エンコーディングの問題はread.csv()事後の操作ではなく、 中に特定されると思っていたからです。

これらのマルチバイト文字列を削除する簡単な方法はありますか? それとも、識別して変換する方法でしょうか? それとも、それらを完全に無視しますか?

4

6 に答える 6

23

これが私の問題を解決した方法です:

まず、生データを texteditor (この場合は Geany) で開き、プロパティをクリックして、エンコーディング タイプを特定しました。

その後、iconv()関数を使用しました。

x <- iconv(x,"WINDOWS-1252","UTF-8")

具体的にはdata.frame、インポートした CSV のすべての列に対してこれを行いました。stringsAsFactors=FALSE私が自分のread.csv()呼び出しに設定したことに注意することが重要です。

dat[,sapply(dat,is.character)] <- sapply(
    dat[,sapply(dat,is.character)],
    iconv,"WINDOWS-1252","UTF-8")
于 2012-11-02T03:50:44.813 に答える
4

これはすでに回答されていることは知っていますが、同じことを経験したので、これに対する私の解決策を共有したいと思いました.

私の場合、str_trim()パッケージの関数を使用してstringr、文字列の先頭と末尾から空白を削除しました。

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

于 2014-07-22T19:26:44.757 に答える