如何从shell运行包中包含的脚本

时间:2016-08-05 18:31:32

标签: r

是否有一种优雅的方法可以从命令行运行包含在已安装包中的脚本,并带有参数。

所以,我知道我们可以做类似的事情:

Rscript path/package/scritpts/script.R arg1 arg2 arg3

但我想要一些更优雅的东西。因为path/package有时可能是荒谬的。

2 个答案:

答案 0 :(得分:1)

答案不是很多,而是一个使用system.file的简单例子:

# Rscript --vanilla pkgscript.R packagname scriptname.R arg1 arg2 arg3
args <- commandArgs(trailingOnly = TRUE)

if (length(args) < 2L) {
  # print out "Usage:" stuff
  stop("Usage: ...")
} else {
  fnames <- list.files(path = system.file(package = args[1]), pattern = args[2],
                       recursive = TRUE, full.names = TRUE)
  lfn <- length(fnames)
  if (lfn == 0L) {
    stop("no script found for: ", sQuote(args[2]))
  } else if (lfn == 1L) {
    # do something with args[-(1:2)]
    source(fnames)
  } else {
    stop("multiple scripts found for: ", sQuote(args[2]))
  }
}

答案 1 :(得分:0)

Dirk通过他的littler包提供了可行的解决方案:

Rscript $(R -e 'cat(system.file("scripts","file.R",package = "pkg"))') arg1 arg2 arg3