0

我尝试以下代码

j <- "*Politics:* Disgraced peer Jeffrey Archer is set to make \xa31m from his Belmarsh "
nchar(j)
# Error in nchar(j) : invalid multibyte string 1

如您所见,我无法使用 nchar()。我该如何解决这个问题?

4

2 回答 2

7

如果您知道特定的编码,您可以使用它iconv来转换为更好用的编码

j <- "*Politics:* Disgraced peer Jeffrey Archer is set to make \xa31m from his Belmarsh "
iconv(j, "ISO-8859-1", "UTF-8")
#[1] "*Politics:* Disgraced peer Jeffrey Archer is set to make £1m from his Belmarsh "
nchar(iconv(j, "ISO-8859-1", "UTF-8"))
#[1] 79

我将您的文本写入文件并使用 geany 检查编码,这就是我到达 ISO-8859-1 的方式。

不需要您弄清楚编码的另一种方法是使用type="bytes"而不是手动转换为 UTF-8

nchar(j, type = "bytes")
#[1] 79

我建议阅读 nchar 上的帮助文件,?nchar因为默认类型和 type="bytes" 之间存在细微差别。

于 2012-11-11T05:43:29.187 回答
2

如果达森是对的...

我知道只有一种方法可以做到这一点,它需要读取每个字符串readLines

x <- readLines(n=2)
*Politics:* Disgraced peer Jeffrey Archer is set to make \xa31m from his Belmarsh 
df vetf tefer\x vtgr
nchar(x)

n=2 告诉 R 你正在阅读 2 行。然后阅读它们(我在 rgui中使用contr+或在 R studio 中使用 +)。然后你可以使用rcntrlenternchar

于 2012-11-11T05:41:43.483 回答