在全局环境中加载时与在包中加载时,同一函数的不同结果
Different results from the same function when loaded in global environment vs in a package
问题
我正在开发一个简单的包来学习 R
使用这个 tutorial 的包开发。为此,我写了一个函数,然后在全局环境中试用,然后在包中提供。但是在这两种情况下 运行 调用函数时我得到了不同的结果。
函数
what_time <- function(language = "english") {
if (!language %in% c("urdu", "english")) {
stop("Either choose english or urdu as a language.")
}
time <- format(Sys.time(), "%H:%M")
if (language == "urdu") {
paste(time, "وقت ھوا ہے")
} else if (language == "english"){
sprintf("It is %s now!", time)
}
}
运行全局环境中的函数:
我在 R
控制台中创建了上述函数定义,然后 运行 函数:
what_time("urdu")
[1] "08:47 وقت ھوا ہے"
运行加载包后的功能:
然后我重新启动了 R 会话并执行了以下操作:
devtools::load_all()
i Loading umair
what_time("urdu")
[1] "08:47 <U+0648><U+0642><U+062A> <U+06BE><U+0648><U+0627> <U+06C1><U+06D2>"
我做错了什么?
您的 self-made 软件包似乎不支持 'special characters'。检查包描述文件中 Encoding
的值,以及 R 会话中 Sys.getlocale()
、Sys.getenv('LANG')
和 Sys.getenv('LC_CTYPE')
的值。
您使用的是哪种语言并不重要,但它应该是 UTF-8 变体。
使用以下设置在我自己的机器上生成正确的输出没有任何问题:
文件'testpackage/DESCRIPTION'
...
Encoding: UTF-8
...
R(工作室)会话
> Sys.getlocale()
[1] "en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8"
> Sys.getenv('LANG')
[1] "en_US.UTF-8"
> Sys.getenv('LC_CTYPE')
[1] "en_US.UTF-8"
To modify these settings:
Sys.setlocale("LC_ALL", 'en_EN.UTF-8')
Sys.setenv("LANG" = "en_EN.UTF-8")
Sys.setenv("LC_CTYPE" = "en_EN.UTF-8")
RStudio 首选项
首选项 > 代码 > 保存 > 默认文本编码:UTF-8
问题
我正在开发一个简单的包来学习 R
使用这个 tutorial 的包开发。为此,我写了一个函数,然后在全局环境中试用,然后在包中提供。但是在这两种情况下 运行 调用函数时我得到了不同的结果。
函数
what_time <- function(language = "english") {
if (!language %in% c("urdu", "english")) {
stop("Either choose english or urdu as a language.")
}
time <- format(Sys.time(), "%H:%M")
if (language == "urdu") {
paste(time, "وقت ھوا ہے")
} else if (language == "english"){
sprintf("It is %s now!", time)
}
}
运行全局环境中的函数:
我在 R
控制台中创建了上述函数定义,然后 运行 函数:
what_time("urdu")
[1] "08:47 وقت ھوا ہے"
运行加载包后的功能:
然后我重新启动了 R 会话并执行了以下操作:
devtools::load_all()
i Loading umair
what_time("urdu")
[1] "08:47 <U+0648><U+0642><U+062A> <U+06BE><U+0648><U+0627> <U+06C1><U+06D2>"
我做错了什么?
您的 self-made 软件包似乎不支持 'special characters'。检查包描述文件中 Encoding
的值,以及 R 会话中 Sys.getlocale()
、Sys.getenv('LANG')
和 Sys.getenv('LC_CTYPE')
的值。
您使用的是哪种语言并不重要,但它应该是 UTF-8 变体。
使用以下设置在我自己的机器上生成正确的输出没有任何问题:
文件'testpackage/DESCRIPTION'
...
Encoding: UTF-8
...
R(工作室)会话
> Sys.getlocale()
[1] "en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8"
> Sys.getenv('LANG')
[1] "en_US.UTF-8"
> Sys.getenv('LC_CTYPE')
[1] "en_US.UTF-8"
To modify these settings:
Sys.setlocale("LC_ALL", 'en_EN.UTF-8') Sys.setenv("LANG" = "en_EN.UTF-8") Sys.setenv("LC_CTYPE" = "en_EN.UTF-8")
RStudio 首选项
首选项 > 代码 > 保存 > 默认文本编码:UTF-8