R 语言是为数学研究工作者设计的一种数学编程语言,主要用于统计分析、绘图、数据挖掘。
机器学习是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科。专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。
数据结构
数值型:数值可以用于直接结算,加减乘除
字符串型:可以进行连接、转换、提取等
逻辑型:或真或假
日期型等
向量
数值型:数值可以用于直接结算,加减乘除
字符串型:可以进行连接、转换、提取等
逻辑型:或真或假
日期型等
向量索引
1、正(负)整数索引
可以使用length()访问向量的个数,访问向量x的第一个值可以使用x[1];还可以使用负整数进行索引,表示访问除了这一行的其他行数据,比如不访问一个三行数据的第二行,可以使用x[-2]
2、逻辑向量索引
以上代码是只输出对应逻辑值为真的值。
还可以进行逻辑判断,例如:
对于字符串向量,我们可以使用一些特殊的操作符进行逻辑判断,例如“%in%”
也可以用于索引:
3、名称索引
我们可以使用names()函数为向量的每一个元素添加名称:
然后即可以通过每一个元素的names来访问它的值:
添加向量:
可以直接通过索引来添加向量;
也可以一次性添加多个元素:
在向量中插入一个新元素:
可以使用append()函数,以下代码表示,在x这个向量的5这个元素后面插入一个99的元素:
如果after=0则代表在向量的头部插入数据:
删除向量:
如果想删除整个向量,可以直接使用rm()函数,如果想删除某个函数,可以直接采用负整数索引的方式:
其实就是重新生成一个新的向量,替换掉原来的向量
修改向量值:直接将需要修改的值索引出来,然后给它赋一个新的值就可以了。
但是注意这里是数值型的向量,我们不能赋值给字符串,会把整个向量变成字符型向量
向量运算
向量是R中最基本的数据结构。
向量运算是对应位置的元素进行运算,其中长的向量的个数必须是短向量个数的整数倍。
Ceiling()不小于x的最小整数,floor()函数不大于x的最大整数:
Trunc()函数返回整数部分:
Round()函数用于进行四舍五入,digits用来表示返回的位数
Signif()保留小数部分有效数字
Which()函数可以返回索引值,也就是元素所在的位置
矩阵与数组
矩阵是一个按照长方阵列排列的复数或实数集合,向量是一维的,矩阵是二维的,需要有行和列。在R软件中,矩阵是有维数的向量,这里的矩阵元素可以是数值型,字符性改革或者是逻辑型,但是每个元素必须都拥有相同的模式,这个和向量一致。
我们可以通过matrix()函数来创建矩阵
行数和列数的分配要满足分配的条件,如果只给出一个行或者是一个列,R会自动进行分配,可以通过byrow来指定按行还是按列进行排列:
byrow = T 表明按照行匹配,反之
Dinames参数可以通过一个列表,指定矩阵行和列的名字:
第一个参数是行名,第二个参数是列名
Dim()函数可以显示向量的维数,可以通过dim()函数来对向量添加维数,从而构建矩阵
默认是按照列匹配
下面介绍一下数组这个数据结构。R中的数组其实就是多维的矩阵,我们重新定义一个向量x:
dim(x)<-c(2,2,5) 意思是3维 2x2x5的数组
只要向dim()函数传入三个参数,就可以构建三位数组,数组还可以使用array()函数来创建:
还可以创建字符型和逻辑型的数组,那么创建了矩阵,要如何访问矩阵的数据呢,下面是矩阵的索引:
首先可以通过矩阵下标进行访问,m[1,2]表示访问第一行第二列的元素
也可以一次访问多个元素,
比如访问第一行的第二、三、四列元素,访问第二、三行的第一列元素。
输出矩阵的一个子集:
如果下标只写一个数字,就是单独访问行或者列:
也可以同样使用负索引进行访问,还可以输入对应的行列名称进行访问:
矩阵中的四则运算需要行和列一致,与向量一致,可以使用colsums()、rowsums()、rowmeans()等函数对整个矩阵进行计算也可以进行矩阵的乘法:
分别是矩阵的内积(对应元素相乘)以及矩阵的外积