R语言学习
R源码安装常见报错及更换package安装源
统计检验应用
卡方检验案例应用
linux本地安装ggplot2
shell脚本中运行R代码
conda构建虚拟环境
karyoploteR基因组数据可视化
Linux环境中R语言绘图问题
【实用】Bioconductor的正确使用
本文档使用 MrDoc 发布
-
+
up
down
首页
shell脚本中运行R代码
## linux下安装 ``` tar -xvf R-xx.xx.xx.tar.gz ./configure make make install ``` ## 问题 编写的一个命令脚本,如UNIX或OS X系统的shell脚本,或Windows系统中的批处理脚本,希望在这些脚本中执行R代码。 ## 解决方案 使用带有CMD BATCH子命令的方式运行R程序,并给出脚本文件名和输出文件名: ``` R CMD BATCH scriptfile outputfile ``` 如果需要将输出结果发送到标准输出设备中,或者希望将命令行参数传递到脚本中,可以考虑应用Rscript命令: ``` Rscript scriptfile arg1 arg2 arg3 ``` ## 讨论 R是一个交互式软件,它提示用户输入,然后显示输出结果。有时你想在批处理模式下运行R,从脚本读取命令。这对于shell内部的脚本,例如含有统计分析的脚本而言特别有用。 CMD BATCH子命令把R转到批处理模式,它读取脚本文件scriptfile并且把输出写入输出文件outputfile。这个运行过程中不与用户交互。 你可能会根据具体情况使用命令行选项,调整R的批处理过程。例如,使用--quiet选项来避免启动信息,否则将使输出信息混乱: `R CMD BATCH --quiet myScript.R results.out` 下面是一些其他批处理模式下的实用命令: - -\-slave 类似于--quiet,它禁止回送输入的信息,使R软件输出的信息更为简洁。 - -\-no-restore 在R启动时不还原工作空间。对于希望以空白工作空间启动R的脚本而言,这个选项很有必要。 - -\-no-save 在退出R时,不保存工作空间;否则,R会保存当前工作空间并覆盖原有工作目录中的.RData文件。 - -\-no-init-file 不读取.Rprofile文件或者~/. Rprofile文件。 在脚本运行结束后,CMD BATCH子命令一般会使用proc.time函数显示其执行的时间。如果你不需要显示该时间,可以在代码最后一行调用参数为`runLast=FALSE`的q函数,它将防止调用proc.time函数。 CMD BATCH子命令有两个限制条件: 1. 输出必须总是传送到一个文件中 2. 无法简单地将命令行参数传送到脚本中 如果这两个限制成为问题,可以考虑使用R软件自带的Rscript程序。Rscript命令的第一个命令行参数是脚本文件的名称,其余的参数将传递给脚本代码: `Rscript myScript.R arg1 arg2 arg3` 在脚本中,命令行参数可以通过调用commandArgs函数来获取,该函数会把参数作为一个字符串向量返回: argv <- commandArgs(TRUE) Rscript程序和CMD BATCH命令使用上面所提到的相同的命令行选项。 将输出结果输出到标准输出设备中,该设备是R从调用它的shell脚本中继承来的。当然,可以通过一般的重定向方法将输出重定向到一个文件中: `Rscript --slave myScript.R arg1 arg2 arg3 >results.out` ## Rscript示例 下面是一个名为arith.R的简易R脚本文件,它对两个命令行参数进行四个算术运算: ``` argv <- commandArgs(TRUE) x <- as.numeric(argv[1]) y <- as.numeric(argv[2]) cat("x =", x, "\n") cat("y =", y, "\n") cat("x + y = ", x + y, "\n") cat("x - y = ", x - y, "\n") cat("x * y = ", x * y, "\n") cat("x / y = ", x / y, "\n") ``` 脚本以下面的形式调用: `Rscript arith.R 2 3.1415` 产生如下结果: ``` x = 2 y = 3.1415 x + y = 5.1415 x - y = -1.1415 x * y = 6.283 x / y = 0.6366385 ``` 在Linux或UNIX系统中,你可以在脚本的开头添加#!后跟随Rscript程序的路径,这样脚本就是完全自我包含的了(即代码变得完全独立于外部)。假定Rscript程序安装在/usr/bin/Rscript目录中,你可以在arith.R脚本文件中添加下面一行,使其成为自我包含代码: ``` #!/usr/bin/Rscript --slave argv <- commandArgs(TRUE) x <- as.numeric(argv[1]) . . (etc.) . ``` 在提示符处,我们把脚本文件标记为可执行文件: `chmod +x arith.R` 此时我们可以不用Rscript前缀而直接调用脚本代码: `arith.R 2 3.1415`
laihui126
2023年1月30日 15:51
分享文档
收藏文档
上一篇
下一篇
微信扫一扫
复制链接
手机扫一扫进行分享
复制链接
关于 MrDoc
觅道文档MrDoc
是
州的先生
开发并开源的在线文档系统,其适合作为个人和小型团队的云笔记、文档和知识库管理工具。
如果觅道文档给你或你的团队带来了帮助,欢迎对作者进行一些打赏捐助,这将有力支持作者持续投入精力更新和维护觅道文档,感谢你的捐助!
>>>捐助鸣谢列表
微信
支付宝
QQ
PayPal
下载Markdown文件
分享
链接
类型
密码
更新密码