机器学习第4章第1节 : R语言基本语法及操作
准备
下载地址 : 清华开源软件镜像站
或者直接下载 : R 3.4.2 for Windows
其他版本请在清华开源软件镜像站下载
笔者使用的是3.4.1,安装后如下图:
打开后如下图:
基本操作
提示符
R以”>”为shell提示符
获得帮助
使用help函数获取某个命令或者函数的帮助,如:mean()是求平均值函数,我想要获取它的帮助函数:
help(mean)
执行结果如下图;
你如果你想要获得示例,你可以使用example():
example(mean)
结果如下图:
代码续行
使用”+”可以进行续行
x <- c(11,22,33+
+ 44+
+ 55)
使用x[1]可以查看第一个元素的值,使用x可以查看所有值,示例如下:
注意!,这里结果是
11 22 132
的原因是33+44+55=132
物件(对象集)
在R中创建的单元为物件(对象集),这些物件可以是变量,数字数组,字符串,函数以及从这些物件中产生的更多的结构.
objects()
可以用来显示存储在R中的对象集名字结果如下图:
它代表了R目前运行环境中有
x
和xm
两个变量,我们可以使用rm()
移除某个对象,示例如下:
从上图可以看到使用
rm(xm)
后,对象集只剩下x
这一个了.
向量
数据型向量及其运算
赋值
最简单的数据结构是数字型向量,它是一个有序(指先后顺序,不是数字大小顺序)的数字集合,数学上叫做偏序关系
比如: ( 1 , 2 ) 和 ( 2 , 1 ) 就不是同一个向量,因为这两个集合的序不一样.
向量的使用方法很简单,可使用”c”后面加个括号就ok.即c()函数,比如:
y <- c(1,2,3,4)
结果如下:
”
<-
” 和”->
“相当于赋值的”=
“号,也可使用assign()
函数
基本操作
对于向量加减乘除的操作,一般是对向量的每个元素进行操作,示例如下:
由此可见,对向量的加减乘除并不会影响到本身,除非你对它进行赋值操作.
对于向量与向量之间的运算,它是每个元素分别进行的,示例如下:
但是! 对于元素个数不一致的向量,元素个数较少的向量将循环扩充到和元素个数最多的向量一致.
这也就意味着元素个数最多的向量的元素个数必须是元素个数小的向量的整数倍,示例如下:
所以,在上图运算的时候实际上是(1,2,3,1,2,3)乘以2后在和(8,9,10,11,12,13)进行运算.
函数操作
对于向量元素的操作,除了加减乘除之外,还可以使用更多的函数,比如:
log / sin / tan / max / mean / sum 等等函数,有些是对每个元素分别计算,有些是对所有元素一起计算,示例如下:
复数向量及规则向量
复数向量
复数向量的元素都是复数,复数的表示方法是实部+虚部i,示例如下:
规则向量
规则序列
我们可以使用
1:m-1
和1:(m-1)
产生规则的序列,示例如下:
冒号的优先权很高,下面的产生范围在3-30之内的公差为3的等差数列的示例可以说明,示例如下:
可以看到,冒号的优先权高于乘号.
seq函数是产生序列的最好的工具,可以使用它产生符合某种规则的序列.seq函数有5个参数,前4个参数分别是起始值(参数名称 : from),终止值(参数名称 : to),步长(参数名称 : by),长度(即元素个数,参数名称 : length.out),示例如下:
当然,我们也可以指定参数名称,传入参数,参数可以乱序
第五个参数是
along.with
,使用along.with
参数中序列的长度作为要产生序列的长度,示例如下:
我们可以看到,
along.with
参数相当于一个to=一个序列的长度.
rep
函数对序列中的元素进行重复后拼接,拼接的方式是使用times参数将所有的元素作为整体拼接,使用each参数将元素分别拼接,示例如下:
逻辑型向量
该向量的元素由逻辑型值组成,逻辑型的值有TRUE(可缩写成T),FALSE(可缩写成F),NA(即”无效”)等等,可以使用
>
>=
==
!=
等逻辑操作符等,示例如下:
无效值(NA)或者缺失值(NaN)主要应付于某操作未完成,结果未知的情况,示例如下:
字符串向量
字符串用单引号或者双引号包围,示例如下:
我们也可以在字符串中使用转义符
\
.
在字符串向量的运算中,paste()函数接受任意数量的参数,可将它们依次连接到字符串向量的元素中,sep指定连接时相隔的字符串,默认为单个空格,示例如下:
索引向量
逻辑型值索引
在逻辑型值索引中,索引向量的元素为逻辑型值,逻辑型值为TRUE的向量将被放在输出结果中,示例如下:
正整数值型索引
在正整数值型索引中,索引向量是正整数类型,用于只是要那些未知的元素输出到结果中,示例如下:
负数索引
对于负数类型的索引,会将除负索引以外的所有元素输出到结果中,示例如下:
字符串索引
在字符串索引中,是以字符串来标注元素的位置的,示例如下:
这里涉及到了names,它是指
names : 对象的名字属性
对象集属性
固有属性
对象集的固有属性有
mode
和length
两种,示例如下:
mode属性转化可完成数据类型的转化.比如:使用as.character()转化为字符型等.示例如下:
设置对象属性
而是用attr方法进行属性的自定义.具体方法为attr(object,name)格式设置对象属性,示例如下:
因子和有序因子
因子用来存储类别变量和有序变量,可用来分组或分类,因子表示分类变量,有序因子表示有序变量.
因子
在R语言中使用factor()函数生成引资对象,语法是factor(data,levels,lables,……),其中,data是数据,levels是因子水平向量,labels是影子的标签向量.示例如下;
我们可以看到分类是将数从小到大进行分类的.
Levels函数用于生成因子向量中的水平(去除重复元素后的元素集),示例如下:
有序因子
我们可以使用ordered函数生成有序因子,示例如下:
因子与有序因子的相互转换
使用cut函数将数据转换成因子或者是有序因子,并进行分组,示例如下:
循环语句
for循环
R语言的for循环与Python类似,都是通过在对象中迭代实现循环,但是在R语言中不能在该循环中直接设置起始值,终止值与步长.示例如下:
while循环
while语句每次都会检查循环条件,如果条件不再满足,则终止循环,示例如下:
条件语句
if….else….是R语言的条件语句.该语句通过检查执行条件来确定是否继续往下执行,如果条件满足,,则执行if后面的对应语句否则执行else后面的对应语句.示例如下: