从 Linux 终端在 R 下将文件内容作为命令执行

executing file contents as commands under R from Linux terminal

我已经编写了一个包含 R 脚本的文本文件。我已经从 .bat 文件 运行ning 下的 .txt 文件中将其发送到 Windows 下的 运行带有 CMD BATCH 的 R。

我正在尝试在终端中复制它(减去可点击性)

我已经更改了程序执行的权限,我已经将文件设置为具有 shebang,并尝试为它重写几个不同的程序,例如

#!/usr/bin/R

library(rvest)

library(plyr)

其中 returns 错误“意外符号附近的语法错误 'rvest'

#!/home/robert/Téléchargements/R-3.2.3/src/unix/Rscript.c

library(rvest)

library(plyr)

这也是 returns 错误“意外符号附近的语法错误 'rvest'

另外,我将文件扩展名从无更改为 .R

在一种情况下它给出了同样的错误,在另一种情况下它启动了 R 会话但没有执行命令。

我意识到这是一个混乱的问题,但我很难把这些鸭子排成一行。

最终,这是有效的:

R < /home/robert/R/scraper1.R --no-save

但这是我的其余答案,以防对其他人不起作用:


我不确定你是否看过这些,但这里有一些东西可以尝试:

骗人?

来自a very similar post: I'm going to assume you googled your question before posting it, so I'm sure you've already seen this, but it's not referenced in your question, so here it is [Source]的最佳答案:

script.r的内容:

#!/usr/bin/Rscript

cat("Hello")

从命令行调用:

./script.r


?Rscript

?Rscript allows you to run R scripts in a Unix-esque system [Source]:

    ## example #! script for a Unix-alike

    #! /path/to/Rscript --vanilla --default-packages=utils
    args <- commandArgs(TRUE)
    res <- try(install.packages(args))
    if(inherits(res, "try-error")) q(status=1) else q()


批量

这是来自旧 R 邮件管道的内容 [Source]:

  1. 将行:R --vanilla < foo.txt foo.results 放入名为 foo.batch 的文件中。文件中不应包含其他文本。

  2. 通过chmod 755 foo.batch

  3. 使这个文件可执行
  4. 在命令行尝试 at -f foo.batch now 或者 batch -f foo.batch

  5. 如果这不起作用,请询问您的系统管理员如何设置批处理。

批处理的优点是1.不需要登录,2. 您的作业的优先级低于交互式作业。


R-e

加载两个库和运行一个R命令[Source]

R -e 'library("rmarkdown");library("knitr");rmarkdown::render("NormalDevconJuly.Rmd")'

R -e 'library("markdown");rpubsUpload("normalDev","NormalDevconJuly.html")'


其他

  • R < scriptname.R --no-save [Source]
  • $ source("scriptname.R") [Source]