R中用于调用sed,rsync,ssh等的system()的替代方法:函数是否存在,我应该编写自己的函数,还是我错过了这一点?

Dav*_*uer 12 bash r

最近,我找到了base::files命令.随着像其它命令getwd,write.lines,file.show,dir,等等似乎有一些bash的函数R当量.

我也写R中,简化到调用一些功能 sshrsync通过system.

例如:

rsync <- function(from, to){
  system(paste('rsync -outi', from, to, sep = ' '), intern=TRUE)
}
Run Code Online (Sandbox Code Playgroud)

但在我进一步讨论之前,我有几个问题:

  • R是否已经内置了常见shell程序的命令,如果有,我在哪里可以找到它们?
  • 如果没有,是否有理由避免编写自己的功能?
  • 是否有更好的替代上述rsync示例中概述的方法?
  • 这些功能的集合是否需要包装?

Ric*_*ton 8

R是否已经内置了常见shell程序的命令,如果有,我在哪里可以找到它们?

有一些功能,如grep模仿shell程序.像搜索任何其他函数一样搜索它们 - 名称通常是相同的.

如果没有,是否有理由避免编写自己的功能?

没有明显的问题.

是否有更好的替代上面的rsync示例中概述的方法?

看起来不错,但如果将内容传递给shell,您需要非常小心地检查用户输入.

这些功能的集合是否需要包装?

绝对.去吧.


had*_*ley 8

我开始沿着这条路走下去,为devtools包装git函数,但最终意识到我需要的是:

bash <- function() system("bash")
Run Code Online (Sandbox Code Playgroud)

稍微包装一下,确保我最终进入正确的目录.