在回答上一个问题时,Alternatives to system() in R for calling sed, rsync, ssh etc.: Do functions exist, should I write my own, or am I missing the point?,hadley's answer表示在遇到类似问题时,他使用了以下功能:
bash <- function() system("bash")
我在他的devtools包中找到了原件; implemented in devtools/R/bash.R:
#' Open bash shell in package directory.
#'
#' @param pkg package description, can be path or package name. See
#' \code{\link{as.package}} for more information
#' @export
bash <- function(pkg = NULL) {
pkg <- as.package(pkg)
in_dir(pkg$path, system("bash"))
}
<击> 我不明白这一点。当我发出
bash <- function() system("bash")
它将我发送到bash shell,之后exit
将我返回到R会话,但没有bash
函数。似乎我可以通过发出以下命令对之一来获得相同的效果(R中的第一个命令,bash中的第二个命令)
system('bash')
exit
或
q('yes')
R
击> <击> 撞击> 被攻击的部分是由于我的复制/粘贴错误
我也无法在devtools包中找到bash
函数的任何进一步用途
有人可以帮我理解如何使用bash
功能;是否可以在交互式R模式之外的上下文中使用(例如在脚本或函数内)?
答案 0 :(得分:7)
早期版本的devtools
包含了一些将代码推送/拉到git / github的功能。这已被弃用。
相反,便捷函数bash
只是在包目录中打开一个bash编辑器。这意味着您可以使用命令行工具与git / github进行交互。
bash
的目的只是保存一些按键以打开包目录中的命令行。它没有任何其他功能。
答案 1 :(得分:4)
然后你要么没有输入
bash <- function() system("bash")
就像这样,在一条线上。这就是我得到的:
> bash <- function() system("bash")
> bash()
[gavin@prometheus cocorresp_check]$ exit
> ls()
[1] "a" "b" "bash" "cars.lo" "dat" "Dbig" "Djackal"
[8] "foo" "i" "jack.t" "jackal" "mat" "mat2" "meanDif"
[15] "mod" "N" "perm" "x" "Xa" "Xab" "Xb"
[22] "xct" "y"
> match.fun("bash")
function() system("bash")
请注意,bash()
是列出的第三个对象。所以第一行定义了函数,我在第二行使用它来删除bash shell,我立即退出,返回R提示符。
如果在您的工作环境中未定义该功能,那么无论您做什么来定义它都不起作用。根据您的描述,R刚刚执行system("bash")
。