0

使用该writexl包,我可以将 data.frame 写入 xlsx 文件,同时在 xlsx 文件中保留特殊字符,因为数据以 UTF-8 编码(在 Mac 上)保存。这在我从 R 控制台运行我的 R 脚本时有效。

在此处输入图像描述

但是,当我安排一个 cronjob 运行完全相同的 R 脚本时,xlsx 文件使用不同的编码保存,因此不会显示特殊字符。有没有办法改变cronjob中的编码。

在此处输入图像描述

我找不到任何有关如何使用cronR包(https://github.com/bnosac/cronR)或writexl包添加与编码相关的参数的文档,也找不到使用以下任何行从 R 脚本中更改编码的任何文档:

options(encoding = "UTF-8")

或者通过将字符列的编码更改为 UTF-8:

data_table <- data_table %>% mutate_if(is.character,
                                       list(~enc2utf8(.)))

在将数据帧写入 xlsx 之前

writexl::write_xlsx(data_table, "filename.xlsx")

有谁知道在运行 cronjob 时如何将编码更改为 UTF-8,以便在保存的 xlsx 文件中可以看到特殊字符?

4

1 回答 1

0

我遇到了 TDaw 的解决方案,它解决了这个问题:

事实证明,无法在 R 脚本中指定设置,因为 Cron 会覆盖它们。解决方案是直接通过终端在 cron 中执行此操作。如果您在添加 cron 作业后使用 cronR 编辑 crontab,则最简单。

在终端类型 crontab -e中进入 crontab。此处的类型i将允许您插入或编辑 crontab。在我输入的文件顶部:

LANGUAGE=gb
LC_CTYPE=en_GB.UTF-8
PYTHONIOENCODING=utf8

这会阻止 cron 使用 POSIX 作为其语言。您按 esc 和:wq保存并退出。如果您在 Rstudio/CronR 中编辑您的 cron 作业,它们将超越编辑并且不会使用这些设置,因此 crontab 必须进行相应的编辑。

于 2021-08-11T06:23:38.053 回答