变量 Variable
- R语言中创建变量无需事先声明数据类型
- 可储存数字、单词、矩阵甚至表格
命名规则
- 可包含字母、数字、点(.)及下划线(_)
- 开头必须是字母(A-Z或a-z)或点(.)
- 以点(.)开头不可以紧接数字
- 不可以数字开头
- 不能是R中保留的关键字
注意:命名区分大小写,如A与a是不同的
保留字
- NA:缺失值(Not Available)
- NULL:缺失的或未定义的值
- NaN:Not a Number(例如0/0)
- TRUE/FALSE:逻辑值
- Inf:无穷(例如1/0)
- If else,repeat,while,function,for,in,next,break:循环语句、条件语句、函数等
- NA_integer_,NA_real_,NA_complex_,NA_character_:指定类型缺失值
基本数据类型/原子数据类型
(The fundamental/atomic data types)
- 数值型(numeric)
- 整数型(integer)
- 复数型(complex)
- 字符型(character)
- 逻辑型(logical)
数据操作符
- 算术运算符(Arithmetic Operators) 即:加(+),减(-),乘(*),除(/),乘方(^),取余(%%)
- 赋值运算符(Assignment Operators)即=,<-,->
- 逻辑运算符(Logical Operators) 即:!(NOT),&(AND(Element wise)),&&(AND),|(OR(Element wise)),||(OR)
- 关系运算符(Relational Operators) 即:大于(>),小于(<),大于等于(>=),小于等于(<=),等于(==),不等于(!=)
- 混合操作符(Miscellaneous Operators)
:冒号操作符(colon operator)此运算符为考虑的向量顺序创建一系列数值
%in% 判断前一个向量是否包含于后一个向量,返回一个布尔值
%*% 在需要执行矩阵与其转置相乘的情况下,使用此特定运算符
数据结构
结构化数据类型(封装类型)
-
向量(vector)
-
矩阵(matrix)
-
数组(array)
-
数据框(data.frame)
-
列表(list)
-
因子(factor)
class():显示对象的数据结构
str():显示对象内容
向量
向量是R中最为基本的类型
一个向量中元素的类型必须相同,包括:
- 数值型(numeric)
- 整数型(integer)
- 复数型(complex)
- 字符型(character)
- 逻辑型(logical)
向量的构建
c()为应用最广泛的向量构造函数,把所有对象连接起来形成新的向量
seq(from = number,to = number,by =((to-from)/(length.out-1)),length.out = NULL,along.with = NULL)
- 生成从from到to的向量,by为步长
- length.out为生成向量的长度
- along.with取赋予变量长度为元素的个数
rep(x,times =number,length = NA,each = 1)
- x:为一个向量(mode任意,包括list)
- times:数值型向量指定每个元素重复的次数,向量的长度为1时,表示重复整个x
- length.out:输出向量的长度,简写len或者length
- each:x中每个元素重复的次数
向量的排序
在R中,和排序相关的函数主要有三个:
sort(),rank(),order()
sort(x,decreasing = FALSE,na.last = NA,...)
- x:排序的对象,可以是字符型,复数型,数值型,以及逻辑型向量
- decreasing:逻辑,按升序或降序排列,FALSE为递增,TRUE为递减
- na.last:处理缺失值的逻辑,TRUE为忽略缺失值并将其置于向量末尾,FALSE为置于向量开头,NA为将缺失值移除
rank(x,na.last = TRUE,ties.method = c("average","first","last","random","max","min"))
求秩的函数,返回值是这个向量中对应元素的排名
x:数值型、复数型、字符型或逻辑型向量
na.last:处理缺失值的逻辑,TRUE为忽略缺失值并将其置于向量末尾,FALSE为置于向量开头,NA为将缺失值移除,keep为保持原位
ties.method:一个字符串,指定相同元素的处理方式
- "average":相同元素都取该组中的平均水平,该水平可能是小数
- "first":相同元素先者在前后者在后
- "max":相同元素都取该组中最好的水平,并列排序
- "min":相同元素都取该组最差水平,可增大水平差异
- "rendom":相同元素随机编排次序
order(...,na.last =TRUE,decreasing = FALSE,...)
- 返回值是对应“排名”的元素所在向量中的位置
- ...:一个数值型、复数型、字符型或逻辑型的向量序列,有着相同的长度或者相同类型的对象
向量的重新赋值
可根据特定索引对向量进行重新赋值
x<-c(42,7,64,9)
x[1]<-1
x
[1] 1 7 64 9
names(x)<-letters[1:4]
x
a b c d
1 7 64 9
x["b"]<-2
x
a b c d
1 2 64 9
x[x>10]<-10
x
a b c d
1 7 10 9
缺失值
NULL:向量的缺失,相当于长度为零的向量
is.null(NULL)
TRUE
is.null(NA)
FALSE
is.na(NULL)
logical(0)
is.null(c(1,2,3,NA)
FALSE
is.na(c(1,2,3,NA)
FALSE FALSE FALSE TRUE
R中NA、NULL、NaN、Inf、-Inf的区别
NA:缺失数据即“Missing value”,是“not available”的缩写;主要会在从文件或数据库读取数据时遇到,或者将一个向量的长度扩展会出现NA值
NULL:空值;一般被用在函数参数中,表示该参数没有被赋予任何值,或者某些函数返回值为Null
NA与NULL的差别还是非常明显的。用一个比喻来讲,NA是已经挖好了一些坑,只是里面没有萝卜而已,这就是所谓的“缺失值”。而NULL则指的是“压根连坑都没有”
NaN:无意义的数即“not a number”,例如sqrt(-2)
Inf:正无穷大
-Inf:负无穷大
和向量有关的函数
min(x) #—最小值
max(x) #—最大值
which.min() #—最小值位置
which.max() #—最大值位置
sum(x) #—求和
length(x) #—求长度
mean(x) #—均值
median(x) #—中位数
var(x) #—方差
sd(x) #—标准差
sort(x),order(x),rank(x) #—排序
unique(x) #—去冗余
intersect(x,y) #—交集
union(x,y) #—并集
setdiff(x,y) #—差异