来自cron(Mac)的R CMD批处理给出了与source()不同的结果

来自cron(Mac)的R CMD批处理给出了与source()不同的结果,r,utf-8,cmd,cron,batch-processing,R,Utf 8,Cmd,Cron,Batch Processing,我正在用cron(Mac)运行R CMD批处理(不幸的是,我无法在这里复制) 但是当它运行脚本时,结果与我直接从R ou RStudio获得的结果不同 区别主要在于涉及字符串的命令,如sapply(object,gsub,pattern=“[[:alpha:][]] 一切正常。使用cron,gsub无法替换像éáã等字符 我认为这可能与语言选项有关,尽管我不确定如何解决这个问题 如何确保source和cron的R CMD batch获得相同的结果?您可能需要检查您的区域设置。在locales下,

我正在用
cron
(Mac)运行
R CMD批处理
(不幸的是,我无法在这里复制)

但是当它运行脚本时,结果与我直接从R ou RStudio获得的结果不同

区别主要在于涉及字符串的命令,如
sapply(object,gsub,pattern=“[[:alpha:][]]

一切正常。使用cron,
gsub
无法替换像
éáã
等字符

我认为这可能与语言选项有关,尽管我不确定如何解决这个问题


如何确保
source
cron
R CMD batch
获得相同的结果?

您可能需要检查您的区域设置。在locales下,我注意到文档中提到OS/X“终端中的R用户可能需要将locale设置为类似‘en_GB.UTF-8’的值,如果它默认为‘C’(就像远程记录和批处理作业时有时会做的那样:注意终端是否将LANG环境变量设置为(高级)选项,但默认值)。”

我仍然不知道发生了什么事。没有人哪怕是一个关于从哪里开始的小提示?谢谢,我会试试的。但是您知道如何知道cron正在使用什么设置吗?在终端中,键入“locale”。除非您编辑了/etc/profile将其设置为其他内容,否则系统使用的是LANG=,等等的任何内容(cron、bash和几乎所有字符)。它可能是“en_US.UTF-8”。作为R CMD的替代方法,您还可以使用Rscript,它是从命令行运行R脚本的内置工具。我已经找到了解决方法。您必须确保
cron
具有与shell相同的环境变量,您必须在
cron
作业开始工作之前定义它们!(但我确实有一些麻烦,以获得正确的ir!)