【问题标题】:Crontab R script failing due to import function (Rstudio is closed)由于导入功能而导致 Crontab R 脚本失败(Rstudio 已关闭)
【发布时间】:2021-02-05 16:49:33
【问题描述】:

我正在尝试使用关闭 Rstudio 的 crontab 运行 Rscript,并且在运行脚本时我在日志中收到以下错误:

Warning message:
package ‘dplyr’ was built under R version 4.0.2 
Error in import("~/Desktop/R/Projects/TestFile.csv",  : 
  could not find function "import"
Execution halted

根据我对 crontab 功能的有限了解,我的理解是“导入”功能只能在打开 Rstudio 的情况下使用。有没有办法解决这个问题,例如使用一个替代函数来导入可以使用 crontab 读取的文件?

注意:脚本在 Rstudio 中运行时有效。

编辑:

crontab 指令:

if (!require("cronR")) {
  install.packages("cronR")
  library(cronR)
}

cron_clear(ask=FALSE)

f <- "~/Desktop/R/Projects/MyRCode.R"
cmd <- cron_rscript(f)
cmd

cron_add(cmd, frequency = "daily", id = "test", at = "16:30")

脚本:

library("miniUI")
library("shinyFiles")
library(quantmod)

if (!require("httr")) {
  install.packages("httr")
  library(httr)
}

if (!require("jsonlite")) {
  install.packages("jsonlite")
  library(jsonlite)
}

if (!require("gsubfn")) {
  install.packages("gsubfn")
  library(gsubfn)
}

if (!require("rjson")) {
  install.packages("rjson")
  library(rjson)
}

if (!require("RJSONIO")) {
  install.packages("RJSONIO")
  library(RJSONIO)
}

library(dplyr)

rio_csv <- import("~/Desktop/R/Projects/TestFile.csv",stringsAsFactors=FALSE)
df <- data.frame("Ticker" = rio_csv[,1],"Amount" = rio_csv[,3], "Shares" = rio_csv[,6],"Average"= rio_csv[,8])

write_json(df,"~/Desktop/R/Projects/JSONFile.json")

【问题讨论】:

  • 看看两件事会很有用:1)运行脚本的crontab命令。 2) 脚本本身。
  • 我添加了一个编辑部分,其中包含您需要的信息。我有一些我希望用来扩展代码的包,因此有一长串的包选择。

标签: r cron rscript


【解决方案1】:

函数导入来自 rio 包。您的自动化脚本失败,因为您没有像 library(rio) 那样加载该包 rio。如果您没有加载包 rio,这甚至在 RStudio 本身中也无法工作。

【讨论】:

  • 不幸的是,即使添加了 rio,我仍然遇到同样的错误。
  • 我不相信你。
  • 我很抱歉读到这一点,但事实就是如此。当 Rstudio 关闭时,rio 包是否在 crontab 中工作,在这种情况下,这可能仍然会导致错误。
  • 当然,在我看来你还没有以 root 用户身份安装 rio 包
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-12-05
  • 2021-07-14
  • 1970-01-01
  • 2013-01-29
  • 2019-09-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多