我非常兴奋地发现Jeff和Dirk的应用程序很少从终端运行R函数。-荣誉!
从那时起,我就能够将我的功能传递给我的开发团队,并让它们在其他服务器上运行。
我的问题是它的部署。在传递给其他人之前,我先在我的电脑里试一试,然后用RStudio.(也是荣誉)。
我在想,在脚本中是否有一个命令要运行,以便判断函数是从命令中运行的,还是用R执行的。
谢谢。
发布于 2015-02-18 17:02:32
我不知道是否有更具体的答案。但是通常情况下,在R中确定代码如何运行是不可能的(或非常困难),这是我在https://github.com/klmr/modules上工作的动机之一。
R只知道代码是否在交互式shell中运行(通过interactive())。
使用模块,您可以测试是否设置了module_name(),类似于Python的__name__
if (is.null(module_name()) && ! interactive()) {
# Stand-alone, execute main entry point
}
if (! is.null(module_name())) {
# Code is being loaded as a module.
}我在此基础上编写了一个小包装,用于编写命令行应用程序。例如,一个非常简单的cat-like应用程序如下所示:
#!/usr/bin/env Rscript
sys = modules::import('sys')
sys$run({
if (length(sys$args) == 0) {
message('Usage: ', script_name(), ' filename')
sys$exit(1)
}
input = sys$args[1]
cat(readLines(input))
})https://stackoverflow.com/questions/28588519
复制相似问题