gpt4 book ai didi

r - 如何正确输入国际化文本?

转载 作者:行者123 更新时间:2023-12-04 12:55:40 27 4
gpt4 key购买 nike

我在 CSV 文件中有一堆来自外国的作者姓名,R 可以很好地读取它们。我正在尝试清理它们以上传到 Mechanical Turk(它真的不喜欢一个国际化的角色)。这样做,我有一个问题(稍后发布),但我什至不能 dput他们以一种明智的方式:

> dput(df[306,"primauthfirstname"])
"Gwena\xeblle M"
> test <- "Gwena\xeblle M"
<simpleError in nchar(val): invalid multibyte string 1>

换句话说, dput工作正常,但粘贴结果失败。为什么不 dput输出必要的信息以允许复制/粘贴回 R(大概它需要做的就是将编码属性添加到结构语句中?)。我如何让它这样做?

请注意 \xeb就 R 而言是一个有效字符:
> gsub("\xeb","", turk.df[306,"primauthfirstname"] )
[1] "Gwenalle M"

但是你不能单独评估字符——它是十六进制代码\x## 或什么都没有:
> gsub("\\x","", turk.df[306,"primauthfirstname"] )
[1] "Gwena\xeblle M"

最佳答案

dput()的帮助页面说:“编写 R 对象的 ASCII 文本表示”。因此,如果您的对象包含非 ASCII 字符,则无法表示这些字符,必须以某种方式进行转换。

所以我建议你使用 iconv()dput 之前转换您的矢量ing。一种方法是:

> test <- "Gwena\xeblle M"
> out <- iconv(test, from="latin1", to="ASCII", sub="byte")
> out
[1] "Gwena<eb>lle M"
> gsub('<eb>', 'ë', out)
[1] "Gwenaëlle M"

如您所见,这两种方式都有效。您可以稍后使用 gsub()将字节反向转换为字符(如果您的编码支持它,例如 utf-8)。

第二种方法更简单(我想更适合您的需要),但单向工作,您的 libiconv 可能不支持它:
> test <- "Gwena\xeblle M"
> iconv(test, from="latin1", to="ASCII//TRANSLIT")
[1] "Gwenaelle M"

希望这可以帮助!

关于r - 如何正确输入国际化文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11369390/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com