R语言是统计领域广泛使用的诞生于1980年左右的S语言的一个分支。R语言的特点:
集统计分析与图形显示于一体的统计分析软件。
自由软件,完全免费并且开放源代码。
可编程语言,开放的统计编程环境,语法通俗易懂。所有R的函数和数据集是保存在程序包里面,只有当一个包被载入时,它的内容才可以被访问。
R具有很强的互动性。
R具有强大和自由的画图功能。
R语言安装程序安装后产生两种使用环境,终端命令行开发环境和RGui开发环境。
Rstudio软件是R开发语言的一个IDE,由于比较好用功能强大,所以使用R语言的一般都会装这个,它依赖R软件(必须先装了R之后,然后安装RStudio)。Rstudio比上面提到的终端命令行开发环境和RGui开发环境强大,如具有调试、可视化等功能,界面更友好。
下载R语言安装程序并安装
到R语言官网
https://www.r-project.org/
下载R语言,,参见下图:
找到下载的R语言安装程序:
打开安装R语言,参见下图:
打开RGui开发环境,参见下图:
下载RStudio安装程序并安装
到RStudio官网
https://rstudio.com/
下载RStudio,参见下图:
找到下载的RStudio安装程序
打开安装RStudio,参见下图:
注意R和rstudio这两个安装路径中不能有中文,必须在同一个父目录下。
打开RStudio开发环境,参见下图:
下面介绍简单使用
包括终端命令行的使用、RGui的使用、RStudio的使用
终端命令行的使用
R语言安装程序安装后有两种使用方法,终端命令行的使用和RGui开发环境的使用。
将R语言安装路径设置到path环境变量
我的R语言安装路是D:\Program Files\R\R-4.0.0\bin\x64
以windows10为例
右键此电脑,属性,高级系统设置,系统属性,在“系统变量”中,找到PATH,添加,参见下图:
在CMD中输入R -h可以获取R命令行帮助
在CMD中启动R命令提示符,打开CMD中输入R或r 回车(按下Enter键),其中“>”是R语言命令提示符。tab键提供了补全的功能,在命令提示符下输入开头几个字符后按两下tab键,会给出相应提示。参见下图:
输入print(20 + 11.6) ,显示如下图:
其前面的“[1]”是维度的表示,R语言实际是使用向量来进行数学运算的。
若想退出“>”状态, 输入q()命令 或 直接按下Ctrl+Z组合键,参见下图:
使用上下键可以在提示符后面切换刚才输入的命令,试试就知道是什么意思了。
在R语言环境中获得帮助信息很简单。一个是help函数,一个example函数。
比如需要plot的函数的用法,可以输入如下命令:
>help(plot)
如果你需要一些函数使用的例子,可以使用example函数。比如plot函数的例子,可以输入如下命令:
>example(plot)
R语言的基本运算量——向量
什么是向量
向量是一组“数”的有序集合。需要把握两点:
1.向量由一组“数”组成,“数”可以是一个也可以是多个;
2.这组“数”是有序的。
举个具体的例子:
(0,1,2)就是一个向量,它由0,1,2这三个“数”组成,并且这个三个“数”是有序的,也就是说(0,1,2)和(1,2,0)是两个不同向量。
在R语言中,这个“数”的概念比较广泛,可以数学上实数、复数,也可以是逻辑值,甚至是字符串。
【注意】R语言对复数的表示有一个点需要注意,就是像6+i这种要表示为6+1i,即复数单位前的系数不可省略。这个影响有时还是很大的,比如sqrt(-17)是非法的,因为负数是无法开平方的,但是sqrt(-17+0i)是合法的,有一些数学基础的人应该很容易看出其中的区别。
b1<-c(2+3i,1+2i)
b2<-c(10+1i,5+4i)
b1+b2
如何创建一个向量
1)基本式
x<-c(0,1,2)
2)连续式
y<-(0:4)
指定起止数,按间隔为1或者-1生成向量。这种方式可以使用c()函数也可忽略。
输入a<-0.1:3
3)连续式,可以指定间隔
a<-seq(1,3,0.5)
这里使用了seq函数
4)连续式,指定起始、间隔和长度
b<-seq(from=2,by=2,length=5)
从2开始,以间隔为2,生成长度为5的向量。
5)嵌套式
d<-3:5
e<-c(1,d,2,d)
这实际上是利用一个已知向量生成新的向量的方法。
6)重复式
f<-2:4
g<-rep(f,3)
重复式使用了rep函数。向量g其实等价于c(f,f,f),但是如果要重复100次,rep(f,100)显然比c(f,f……)方便许多。
h<-rep(f,each=2)
向量h是将向量f中的每个元素重复2次形成的。
7)切片式
i<-2:5
k<-4:80
m<-k[i]
向量k是一个很长的向量,有时我们只需要向量k的一部分。这时我们可以使用向量i对向量k进行切片。切片的方法是使用“[]”。如图,向量m就是我使用向量k的第一个到第四个元素生成的新向量。向量i不需要是1:4这种连续的形式,i<-c(1,10,50)也是正确的。
8)赋值式
q<-c(1,2,3)
q[1:2]<-c(5,6)
有时你可能需要改变向量中部分值,此时可以使用这种赋值的形式。
向量的运算
先看一个简单的例子:
x1<-c(5,3)
x2<-c(2,4)
x1-x2
在R语言中,运算都是以向量为基础的。比如我们先前提到的3*5,实际上,在计算时应理解为c(3)*c(5)。其结果15也是一个向量,即c(15)。
R语言向量的运算规则简单来说分三步:
1.将较短的向量补全,使运算符两侧的向量长度相等;
2.补全的规则是短向量重复,使其长度大于等于长向量,再按长向量的长度切片;
3.将两个向量中位置对应的两个元素,按运算符运算。
例子:
3*c(1,2,3)
3应理解为c(3),即图中的计算应理解为c(3)*c(1,2,3)。显然,c(3)的长度是1,而c(1,2,3)的长度是3,c(3)需要将长度补全为3,再进行计算。根据补全的规则,c(3)重复为c(3,3,3)。长度相等后,两者按位相乘,c(3*1,3*2,3*3),即c(3,6,9)。
又如:
c(2,3)*c(4,5,6)
看到警告信息了吧,两者长度不是整数倍。这种情况的运算过程中多了一个切片的动作,首先c(2,3)由于长度不够进行补全,为c(2,3,2,3),长度超过了3,就按长度3进行切片,变为c(2,3,2)。然后,c(2,3,2)*c(4,5,6)得到结果c(8,15,12)。
再如
x1<-c(2,4,6)
3*x1
函数运算也可以作用于向量。如:
sqrt(c(2,4,8))
sqrt是开方运算,上面的运算相当于c(sqrt(2),sqrt(4),sqrt(8))。
如何知道一个向量是由什么组成的呢?R语言提供了一个函数:mode(),此函数会返回一个字符串表示向量的类型
R语言同样提供了方法将不同类型的向量进行转换。比如想要将向量d1转换为一个由字符串组成的向量c1。
as对象还有许多其他的方法用于类型转换:
as.numeric()
as.logical()
as.charactor()
as.factor()
R语言数据类型
数值型 Numeric 如 100, 0, -4.335
双精度型 double
整型 integer
字符型 Character 如 “China”
逻辑型 Logical TRUE, FALSE,NA
复数型 Complex 如3 + 2i
向量(Vectors) 使用c()函数创建向量,前面已经介绍过了。
列表(Lists)
列表是一个R对象,它可以在其中包含许多不同类型的元素,如向量,函数甚至其中的另一个列表。可以使用list()函数创建列表。
list1 <- list(c(2,5,3),21.3)
矩阵(Matrices)
矩阵是二维矩形数据集。可以使用矩阵matrix()函数的向量输入创建。
数组(Arrays)
数组函数使用一个dim属性创建所需的维数。 在下面的例子中,我们创建了一个包含两个元素的数组,每个元素为3x3个矩阵。
n <- array(c('green','yellow'),dim = c(3,3,2))
因子(Factors)
因子是使用向量创建的r对象。 它将向量与向量中元素的不同值一起存储为标签。 标签总是字符,不管它在输入向量中是数字还是字符或布尔等。 它们在统计建模中非常有用。
使用factor()函数创建因子。nlevels函数给出级别计数。
# Create a vector.
apple_colors <- c('green','green','yellow','red','red','red','green')
# Create a factor object.
factor_apple <- factor(apple_colors)
数据帧(Data Frames)
数据帧是表格数据对象。 与数据帧中的矩阵不同,每列可以包含不同的数据模式。 第一列可以是数字,而第二列可以是字符,第三列可以是逻辑的。 它是等长度的向量的列表。
使用data.frame()函数创建数据帧。
BMI <- data.frame(
gender = c("Male", "Male","Female"),
height = c(152, 171.5, 165),
weight = c(81,93, 78),
Age = c(42,38,26)
)
R语言流程控制语句
在R语言中,流程控制语句主要有if else、for、while、switch、repeat等,这些流程控制语句本身在许多语言中都是相似的如c语言,最重要的是注意其在不同语言中的语法特性。
ThreeMax<-function(a, b, c)
{
if(a
a = b
}
if(a>c){
return (a);
}
else{
return (c);
}
}
d <- ThreeMax(5,6,3)
print(d) //此句可简写为d
对R语言流程控制语句就简单的介绍到此吧。
R语言脚本
通过在脚本文件中编写程序来执行编程,可以重复使用。脚本文件以.R作为扩展名,不过这并不是必需的。在命令提示符下使用R解释器(称为Rscript)来执行这些脚本。在文本文件中编写下面的代码:
# My first program in R Programming——注释
myString <- "Hello, World!"
print ( myString)
保存文件名为test.R,保存在D:\R_language_script目录中,参见下图:
在CMD命令提示符下输入如下命令回车执行
Rscript D:\R_language_script\test.R
参见下图:
上面方法编写运行R语言脚本不太方便,一般利用RGui或RStudio。
RGui的使用
打开RGUI
建立新脚本:
R语言免费且开源,具有强大和自由的画图功能,R语言原生的绘图系统已经非常强大了,还有一系列的绘图辅助R包,比如著名的ggplot2,更是锦上添花。
【包是R语言发展至今最重要的因素。包其实就是一个一个的函数脚本,安装了一个包以后,你就可以使用这个包里数据或者函数。R语言写起来很快,所以很多科学家再研究出新算法新工具之后,都会第一时间发布一个R版本的工具。所以R语言再科学界的地位很高。
大部分R包的安装方法很简单:
install.package("XXX")
其中XXX是包名
使用installed.packages()可以看到各个包安装的路径,版本号等信息。
卸载删除包,使用remove. Packages()
详见https://www.cnblogs.com/brown-birds/p/8031734.html
】
现在简要介绍如何使用R语言利用scatterplot3d包作3D(3维)图形。
基本形式:
scatterplot3d(x, y, z, color= ,col.axis=" ", col.grid=" ", main=" ", sub= , xlab= , xlim=, pch= , scale.y= , angle= , type= )
参数:
color:设置点颜色
col.axis:设置坐标轴颜色
col.grid:设置网格颜色
main:设置主标题
sub:副标题
xlab、ylab、zlab/xlim:x、y、z轴标签/界限
pch:设置点的形状
scale.y:y轴相对于x轴、z轴的比例
angle:x、y轴角度
type:"p"点;"l"线;"h"垂线
建立一个脚本文件
library(scatterplot3d) //加载scatterplot3d库
#散点图是描述二元变量关系的图,如果需要一次性对三个变量交互关系进行可视化,可使用三维图
#scatterplot3d(x,y,z),x绘制在横轴上,y绘制在竖轴上,z绘制在透视轴上
z=seq(-10,10,0.01)
x=cos(z)
y=sin(z)
scatterplot3d(x,y,z,highlight.3d = TRUE)
打开RGUI,点击菜单“文件→新建R脚本文件…”输入上面的代码,保存名称为test02.R,保存在D:\R_language_script目录中,参见下图:
运行报错及处理,参见下图:
加载缺失的包后,再次运行成功,参见下图:
对RGui的使用就介绍到这里吧。
RStudio的使用
打开RStudio
建立新脚本
有了上面的基础,对RStudio的使用应该不难,在此就不多说了,你可以探索使用。
进一步学习资源
https://blog.csdn.net/jeffery0207/category_7305915.html
https://blog.csdn.net/joshua_hit/category_6713875.html
https://blog.csdn.net/lilanfeng1991/category_2421117_2.html
https://www.zhihu.com/question/346865819