基本操作
1.R语言中所有的函数都要加括号,getwd()、setwd(" “)等
2.在R语言中,对变量进行赋值无需提前声明,但变量名不能是数字开头;赋值符号为 “<-”。”<<-"表示强制赋值给一个全局变量而不是局部变量。ls.str()函数可以列出所有变量及其对应的数值
3.rm()函数可以删除定义的变量,e.g. rm (x)
R中的数据结构
1.向量、标量
1.1 基本内容
· R中的向量概念是于数学中的向量是不同的,更类似于数学上的集合的概念,由一个/多个元素构成
· 用函数 c() 来创建向量,向量可以包含数字、字符串、逻辑符等
· 向量化计算最大的好处是不用循环,直接计算
1.2 向量索引
- 正负数、向量索引:
正数就是数组索引,负数表明取除了这个位置的其他数据,索引表示取这个区间中的数据
- 在索引中还可以直接输入逻辑值,只有为TRUE时才能输出(注意当多了一个逻辑值时会产生一个缺失值NA)
- 对于字符串类型的向量,%in%可判断一个字符串是否在向量中
- 给向量添加名字,之后可以通过名字来进行索引
- 向量元素的增删**
5.1 增加数据:
可以直接插入一个数据,也可批量插入数据,也可在指定的位置后面插入数据
5.2 删除数据
删除整个向量
删除指定位置的数值
1.3 向量运算
- % / %是取整运算!!!
- 不同长度的向量之间可以进行运算(就是把短的向量中的元素循环使用),长的向量的长度必须是短向量的整数倍
- 向量的元素之间也可以直接进行比对
· %in%是判断是否匹配,类似于python中的in
· 比较符号是 == !
- 向量计算的函数
abs(),sqrt(),log(),celiing(返回大于数值的最小整数),floor(返回不大于数值的最大整数),trunc(返回整数部分),round(x,digits = (四舍五入,digits表示保留小数的位数)),sigif(x,digits = (保留有效数字,digits表示保留数字的位数))等是用来对向量中的元素进行处理。
sum(),min(),mean(),var(方差),prod(连乘),which(x(返回x在向量中所在的位置))等是对向量整体进行计算。
2.矩阵(Matrix)
矩阵是有维度的向量,这里的矩阵元素可以是数值型、字符型或逻辑型,每个元素必须有相同的模式,用matrix()函数来构造,并可选定是按行/列排序
把一个向量加上一个维度就可以转换成矩阵
- 矩阵的索引
就是正常的行列号索引,负数表明去除这一行/列
- 矩阵的乘法
"*“就表示的是对应行列位置的数相乘,”% * %"表示的是真正的矩阵乘法
3.列表(List)
列表是一些其他对象的有序集合。列表中可以存储若干向量、矩阵、数据框、甚至是其他列表的组合;其与向量都是一维的数据集合,不过列表可以存放任意对象。
通过给每个元素命名后就有多种访问元素的方法
注意:mlist[1]得到的是mlist的一个子集,其类型仍为list,mlist[[1]]得到的就是元素本身的数据类型
插入方式同向量,但要注意是 双中括号,要删除的话就直接是负数即可
4.数据框(Dataframe)
数据框实际上是一个列表。列表中的元素是向量,这些向量构成数据框的列,每一列都必须有相同的长度,所以数据框是矩形结构,且数据框中的列必须命名
使用data.frame()函数构建df
其索引和列表的是类似的
5.因子
因子也是一个向量,最大作用就是分类
e.g. 有不同颜色的海洋球,每一种颜色就是一种水平(level),所有海洋球的集合就是一个向量,可以统计这个向量每个颜色球的数量
- 因子的应用:计算频数、独立性检验、相关性检验、方差分析、主成分分析、因子分析…
- 使用factor()函数定义因子,可以在函数中指定level的顺序
plot一个因子其绘制出来的图是柱状图,来统计每个level的数量;也可通过cut()函数将数组转换成一个因子类型的,如下图所示:
6. 缺失值
NA与任何值计算后都是NA,NA与任何值进行比较后不返回T/F而是返回NA,那么如何对有NA的数组进行求值呢?na.rm = T,但要注意一点,na.rm是直接将NA去除了,所以在总count时是去除了NA后的数量。
那么如何解决这个问题?na.omit()函数。如果应用于数据框的话,就是删除包含NA的每一行
- 不同缺失值之间有差别:NA是存在的值但不知道是多少,NaN表示不存在,Inf表示存在时无穷大/小