【问题标题】:setwd() results in a syntax error in Terminalsetwd() 导致终端出现语法错误
【发布时间】:2018-05-16 21:58:45
【问题描述】:

为什么 RScript 在 RStudio 上运行良好,但在 Terminal 上运行 crontab 作业时却报错?

我正在尝试在 RScript 上运行 crontab 作业以每分钟收集一次数据 (* * * * *)。 RScript 在 RStudio 上运行时工作正常,但是在运行 crontab 时,我收到以下错误:

/Users/xx/Capstone_2/Get_Data.R: line 3: syntax error near unexpected token `'/Users/xx/Capstone_2/Data''
/Users/xx/Capstone_2/Get_Data.R: line 3: `setwd('/Users/xx/Capstone_2/Data')'

这是我在crontab -e 上运行的:

* * * * * /Users/xx/Capstone_2/Get_Data.R

这里是 RScript:

setwd('/Users/xx/Capstone_2/Data')
library(twitteR)

setup_twitter_oauth('consumer-key', 'consumer-secret', 
'access-token','access-secret')

iphonex <- searchTwitter("iphonex", n=1000)
iphonex <- twListToDF(iphonex)

write.csv(iphonex, '/Users/xx/Capstone_2/Data/iphonex.csv')

【问题讨论】:

  • 通过crontab执行这段代码时会出现什么错误信息?执行 cron 作业的用户 ID 是否可能对 write.csv() 中列出的子目录没有写访问权限?
  • 疯狂猜测:尝试在脚本中使用双引号而不是单引号。

标签: r terminal cron syntax-error


【解决方案1】:

如果你已经向我们展示了所有/Users/xx/Capstone_2/Get_Data_Test.R 文件,那么问题是shell 不知道你想通过R 运行它。你需要添加

#!/usr/bin/Rscript

作为第一行。

【讨论】:

  • 我添加了那行,但我得到一个不同的错误:/bin/sh: /Users/xx/Capstone_2/Get_Data_Test.R: /usr/bin/Rscript: bad interpreter: No such file or directory
  • R 安装在哪里?您可以使用控制台命令which Rscript 找到它。在第一行使用 Rscript 的路径。
【解决方案2】:

第一步:

检查(在终端中)Rscript 的安装位置:

which Rscript

第二步:

根据步骤 1 的路径(例如)调整 R 脚本中的 shebang 行:

#!/usr/bin/Rscript

第三步:

让 crontab 处理对您的 R 脚本所在目录的更改。

* * * * * cd /Users/xx/Capstone_2/ && /usr/bin/Rscript Get_Data.R

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-20
    • 1970-01-01
    • 1970-01-01
    • 2023-02-13
    • 2014-08-21
    相关资源
    最近更新 更多