生物信息学分析数据科学与R语言

如何在R代码中调用Shell

2020-09-16  本文已影响0人  JeremyL

在服务器中运行R代码时,有时候希望运行shell命令;这时候的R代码就就可以直接调用软件处理数据,然后用R代码做后续的数据分析;其实用python做这件事可能更方便。
有此功能的函数,system, system2

#system

##用法

system(command, intern = FALSE,
       ignore.stdout = FALSE, ignore.stderr = FALSE,
       wait = TRUE, input = NULL, show.output.on.console = TRUE,
       minimized = FALSE, invisible = TRUE, timeout = 0)

##参数详解:

command:字符串指定需要运行的系统命令
intern: 逻辑(不是NA),它指示是否将命令的输出捕获为R字符向量。
ignore.stdout ignore.stderr:逻辑(不是NA),指示应忽略写入stdout或stderr的消息
wait: 逻辑(非NA),指示R解释器应等待命令完成还是异步运行。 如果intern = TRUE,它将被忽略(并且解释器将始终等待)。 异步运行命令时,Windows中的Rgui控制台上不会显示任何输出(而是将其删除)。
input:如果提供了字符向量,则将每行一个字符串复制到一个临时文件,并将命令的标准输入重定向到该文件。
show.output.on.console:
timeout:进程运行的时间限制,以秒为单位
minimized:辑(不是NA),指示命令窗口最初是否应显示为最小化窗口。
invisible:逻辑(不是NA),指示命令窗口是否应该在屏幕上可见。

##system1示例:

> system("ls -F")
shiny-server-1.5.14.948-amd64.deb
#结果输出保存为R对象
> t1 <- try(system("who", intern = TRUE))

》system(paste('"c:/Program Files/Mozilla Firefox/firefox.exe"', '-url cran.r-project.org'), wait = FALSE)

#system2

##用法

system2(command, args = character(),
        stdout = "", stderr = "", stdin = "", input = NULL,
        env = character(), wait = TRUE,
        minimized = FALSE, invisible = TRUE, timeout = 0)

system2函数可以调用由command参数指定的操作系统命令。运行的系统命令和参数需要分开赋值给参数command, args

##参数详解:

command:字符串指定需要运行的系统命令
args:command的参数,字符串向量
stdin:标准输入,或者文件名;使用input参数该参数失效
input:如果提供了字符向量,则将每行一个字符串复制到一个临时文件,并将命令的标准输入重定向到该文件。
env:可以设置环境变量
wait:逻辑(非NA),指示R解释器应等待命令完成还是异步运行。 如果stdout = TRUE或stderr = TRUE,它将被忽略(并且解释器将始终等待)。 异步运行命令时,Windows中的Rgui控制台上不会显示任何输出(而是将其删除)。
timeout:进程运行的时间限制,以秒为单位
minimized:辑(不是NA),指示命令窗口最初是否应显示为最小化窗口。
invisible:逻辑(不是NA),指示命令窗口是否应该在屏幕上可见。

##system2示例:

> system2(command="ls",args="-l sh*")
-rw-rw-r-- 1 labubuntu labubuntu 68120352 Jun  4 05:31 shiny-server-1.5.14.948-amd64.deb

> system2(command="ls",args=c("-l","sh*"))
-rw-rw-r-- 1 labubuntu labubuntu 68120352 Jun  4 05:31 shiny-server-1.5.14.948-amd64.deb

# 参考:

system2 RDocumentation
system RDocumentation

上一篇下一篇

猜你喜欢

热点阅读