在服务器中运行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
网友评论