gpt4 book ai didi

r - 包中包含非英文字符函数时的编码问题

转载 作者:行者123 更新时间:2023-12-03 14:31:15 26 4
gpt4 key购买 nike

我正在构建自己的包,但我一直遇到编码问题,因为我的包中的函数具有非英语(非 ASCII)字符。
从本质上讲,韩文字符是我包中许多功能的一部分。示例函数:

library(rvest)
sampleprob <- function(url) {
# sample url: "http://dart.fss.or.kr/dsaf001/main.do?rcpNo=20200330003851"
result <- grepl("연결재무제표 주석", html_text(read_html(url)))
return(result)
}
但是,在安装软件包时,我遇到了编码问题。
我创建了一个只有一个函数(如上所示)的示例包( https://github.com/hyk0127/KorEncod/ ),并将其上传到我的 github 页面上作为一个可重现的示例。我运行以下代码进行安装:
library(devtools)
install_github("hyk0127/KorEncod")
以下是我看到的错误消息
Error : (converted from warning) unable to re-encode 'hello.R' line 7
ERROR: unable to collate and parse R files for package 'KorEncod'
* removing 'C:/Users/myname/Documents/R/win-library/3.6/KorEncod'
* restoring previous 'C:/Users/myname/Documents/R/win-library/3.6/KorEncod'
Error: Failed to install 'KorEncod' from GitHub:
(converted from warning) installation of package ‘C:/Users/myname/AppData/Local/Temp/RtmpmS5ZOe/file48c02d205c44/KorEncod_0.1.0.tar.gz’ had non-zero exit status
关于 line 7的错误信息指函数中的韩文字符。
可以使用 tar.gz 文件在本地安装该包,但是该功能无法按预期运行,因为韩语字符在损坏的编码中被识别。
这不可能是第一次有人尝试构建具有非英语(或非 ASCII)字符的包,但我找不到解决方案。任何帮助将不胜感激。

我认为相关的一些信息:
目前 DESCRIPTION文件指定“编码:UTF-8”。
我用过 sys.setlocale将语言环境设置为韩语并返回无济于事。
我已指定 @encoding UTF-8到功能也无济于事。
我目前使用的是管理语言设置为英语的 Windows。我尝试使用不同的笔记本电脑,并将 Windows 和管理语言设置为韩语,但出现了同样的问题。

最佳答案

关键技巧是用它们的 unicode 代码替换非 ASCII 字符 - \uxxxx编码。
这些可以通过 stringi::stri_escape_unicode() 生成功能。
请注意,由于需要完全删除代码中的韩文字符才能通过 R CMD 检查,因此需要通过 {stringi} 执行手动复制和重新编码。在命令行上对包中包含的所有 R 脚本进行粘贴操作。
我不知道针对此问题的可用自动化解决方案。
在提供的示例的特定用例中,unicode 将如下所示:

sampleprob <- function(url) {
# stringi::stri_escape_unicode("연결재무제표 주석") to get the \uxxxx codes
result <- grepl("\uc5f0\uacb0\uc7ac\ubb34\uc81c\ud45c \uc8fc\uc11d",
rvest::html_text(xml2::read_html(url)))
return(result)
}
sampleprob("http://dart.fss.or.kr/dsaf001/main.do?rcpNo=20200330003851")
[1] TRUE
这会很麻烦,但它似乎是使您的代码平台中立的唯一方法(这是 CRAN 的关键要求,因此需要进行 R CMD 检查)。

关于r - 包中包含非英文字符函数时的编码问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66361411/

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