如何在R代码中调用Shell

作者: JeremyL | 来源:发表于2020-09-16 20:45 被阅读0次

    在服务器中运行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

    相关文章

      网友评论

        本文标题:如何在R代码中调用Shell

        本文链接:https://www.haomeiwen.com/subject/grghyktx.html