博主简介:
云计算领域优质创作者
新星计划第三季python赛道第一名
阿里云ACE认证高级工程师
阿里云开发者社区专家博主
交流社区:CSDN云计算交流社区欢迎您的加入!
目录
1. 关于R语言
2. R语言能干什么?
3. R语言有什么优势?
4. 在Docker中部署运行R语言
结束语
R是一个面向统计分析和绘图的语言,是由新西兰奥克兰大学统计学系的Ross Ihaka和Robert Gentleman共同创立。R带有大量的统计软件包,如常见的贝叶斯推断、聚类分析、机器学习、空间统计、稳健统计等,在生物信息、统计学等领域应用广泛。
|
Rocker项目是一个Docker官方支持的项目,它提供了R语言的容器环境支持。官方提供的r-base镜像就是基于Rocker项目的。
|
R不仅在学术界很受欢迎,很多大公司也使用R编程语言,包括Uber、谷歌、Airbnb、Facebook等。用R进行数据分析需要一系列步骤:编程、转换、发现、建模和交流结果 R 语言是为数学研究工作者设计的一种数学编程语言,主要用于统计分析、绘图、数据挖掘。 如果你是一个计算机程序的初学者并且急切地想了解计算机的通用编程,R 语言不是一个很理想的选择,可以选择 Python、C 或 Java。 R 语言与 C 语言都是贝尔实验室的研究成果,但两者有不同的侧重领域,R 语言是一种解释型的面向数学理论研究工作者的语言,而 C 语言是为计算机软件工程师设计的。 R 语言是解释运行的语言(与 C 语言的编译运行不同),它的执行速度比 C 语言慢得多,不利于优化。但它在语法层面提供了更加丰富的数据结构操作并且能够十分方便地输出文字和图形信息,所以它广泛应用于数学尤其是统计学领域。 R 语言官方网站:The Comprehensive R Archive Network 官方镜像站列表:CRAN - Mirrors |
1、R是科学计算的强大工具包。 2、R主要擅长统计分析方面工作。 3、R具有顶尖的绘图功能。 4、R的交互式数据分析功能强大且灵活。 5、R可以轻松地从多个数据源导入数据。 6、金融领域数据统计与计算的强大工具。 7、数据挖掘和机器学习领域的必备工具。 |
1、R是免费的。很多商业统计软件价格不菲,投入成千上万美元都是有可能的。可能国内一些人感觉不会很明显,因为很多人是使用单位或学校集体购买的软件,或者使用破解过的统计软件,而不是花自己钱。对于前者,并不是每个人都有机会享受这种福利。而对于破解过的统计软件,其计算结果的准确性很可能会被质疑。 |
2、R主要擅长统计分析方面工作。R最初是由两位统计学家开发的,其主要优势也在于统计分析方面。它提供了各种各样的数据处理和分析技术,几乎任何数据分析过程都可以在R中完成。与此相比较,SPSS、MINITAB、MATLAB等数据分析软件更加适合于已经处理好的、规范的数据,而对于还未完成处理过程,或者在分析中仍需大量与处理过程的数据而言,它们可能会显得繁琐一些。 |
3、R具有顶尖的绘图功能。尤其对于复杂数据的可视化问题,R的优势更加明显。 |
4、R的交互式数据分析功能强大且灵活。一个完整的数据分析过程可以大体包括以下几个步骤:(1)导入数据;(2)数据准备、探索和清洗;(3)拟合一个统计模型;(4)得到结果并进行评估;(5)如果结果的评估不理想,重新完成(3)步骤;(6)得到多个模型的结果,并进行交叉检验;(7)根据模型结果进行预测、分析等;(8)形成报告。R中每个步骤的所有“输出”都可以直接作为下一个步骤的“输入”,可以批量完成以上所有的(8)个步骤。 |
5、R可以轻松地从多个数据源导入数据,包括文本文件、数据库、其他统计软件等。 |
6、R的更新速度很快,包含最新的大量统计方法和案例。 |
7、R也可以很美。目前最基本的R软件(R2.15.2)只有一个编程窗口,看起来挺丑的。但它穿上衣服以后也可以很漂亮,它的衣服就是各式各样的GUI(Graphical User Interface,图形用户界面)工具。目前比较常用的GUI工具包括Rstudio、Rattle、Rattle、Red-R、Deducer、RKWard、JGR、R Commander、Tinn-R等。其中Rstudio可能是最受欢迎的 |
可以直接运行官方提供的r-base镜像,进入交互模式的R环境: |
$ docker run -ti --rm r-base
退出交互命令行时,可以使用quit()指令,此时可以选择是否保存工作空间:
|
> quit()
Save workspace image? [y/n/c]:
2.运行R语言批量模式
可以通过连接工作目录,来运行R语言的批量指令。把一个卷(volume)连接至容器时,最好使用一个非根用户,这样可以避免权限问题: |
$ docker run -ti --rm -v "$PWD":/home/docker -w /home/docker -u docker r-base RCMD check .
* using log directory ‘/home/docker/..Rcheck’
* using R version 3.3.0 (2016-05-03)
* using platform: x86_64-pc-linux-gnu (64-bit)
* using session charset: UTF-8
* checking for file ‘./DESCRIPTION’ ... NO
* DONE
Status: OK
3.运行R语言命令行模式
可以直接进入R容器的bash命令行: |
$ docker run -ti --rm r-base bash
root@4a0bba3f4cb4:/#
在bash中如果希望进入R语言交互命令行,可以直接输入R: |
root@4a0bba3f4cb4:/bin# R
>
可以使用vim.tiny编辑器,新建r-demo.R脚本: |
print("Hello,World!")
保存后,就可以使用Rscript指令运行此脚本: |
root@4a0bba3f4cb4:/bin# Rscript demo.R
Rscript demo.R
[1] "Hello,World!"
还可以在R语言交互命令行中运行R脚本。首先,在容器中新建hi.R脚本 |
hello <- function( name ) {
sprintf( "Hello, %s", name );
}
然后直接输入R指令进入交互命令行,使用source()函数加载脚本,再使用hello()函数调用用户的打印逻辑:
|
> source('/bin/hi.R')
> hello('docker')
[1] "Hello, docker"
>
4.使用自定义容器
在用户将手头的R项目容器化的过程中,往往需要加入自己的环境构建逻辑,也需要运行自定义容器。这种情况下,用户就需要基于官方提供的r-base基础镜像,完成自定义的Dockerfile,例如:
|
FROM r-base:latest
COPY . /usr/local/src/r-scripts
WORKDIR /usr/local/src/r-scripts
CMD ["Rscript", "running-r-scripts.R"]
其中running-r-scripts.R内容可以简写为:print("My RContainer!")然后,使用docker build指令构建:
|
$ docker build -t my-r-container /directry/of/Dockerfile
然后使用docker run指令运行容器,并通过docker ps指令查看运行状态: |
$ docker run -d my-r-container
e86739e8226a081372d9bb0fb9f62a32405814b5172a543487b0751839c2e57f
docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS
e86739e8226a my-r-container "Rscript running-r-sc" ..ago Exited (0)