【问题标题】:Saving XLSX with special characters (UTF-8 encoding) using Cronjob in R在 R 中使用 Cronjob 保存带有特殊字符(UTF-8 编码)的 XLSX
【发布时间】:2023-03-10 08:45:01
【问题描述】:

使用 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 文件中显示特殊字符?

【问题讨论】:

    标签: r excel encoding utf-8 writexl


    【解决方案1】:

    我遇到了a solution by TDaw,解决了这个问题:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2011-02-21
      • 2020-09-20
      • 1970-01-01
      • 1970-01-01
      • 2021-02-23
      • 1970-01-01
      • 2014-06-15
      • 2010-11-25
      • 2014-02-14
      相关资源
      最近更新 更多