一、标识符
(1)标识符是你写的自定义函数、变量的名称
(2)有以下几个基本的要求:
①只能由英文、数字、下划线、英文点“.”四种组成
②第一个字符必须式英文字母
③特别注意:R区分大小写,且不要用R已经内置使用过的R标识符
二、基本数据类型
(1)数值型(numeric):例如:1,0.5等
(2)字符型(character):要用单引号或者双引号括起来
(3)逻辑型(logical):使用TRUE或者FALSE(注意全部大写),也可以简写成T和F
·逻辑值可以参与运算(T=1,F=0)
(4)复数型(complex):例如2+3i
(5)原生型(raw)
plus:要看某个变量是什么数据类型可以调用:mode(variable)函数
三、特殊的常数值
(1)Inf:表示无限大
(2)NaN:表示Not A Number是一个特殊的数值型常数
(3)NULL:表示空值
(4)NA:指的是缺失值,表示missing number
plus:在后面处理数据的时候经常要删除掉这些有问题的数据,可以使用一些函数判定是不是这些特殊的常数字
is.infinite() | 是无穷大 |
is.finite() | 是有限数 |
is.null() | 是空值 |
is.na() | 是缺失值 |
is.nan() | 是NAN值 |
一直不是很了解:NaN//NA//NULL之间有什么区别,因此我还是好好看一下~
(1)区分NULL和NA之间的区别
NULL:表示的就是空,且不占位置,计算的时候直接忽略掉
NA:所有的数值计算都是结果为NA,是占一个位置的
(2)区分NA和NaN
都是占位置的,计算结果分别是NaN和NA
这个地方我觉得可以这样解释:就是nan指的是不是一个数字,na是缺失数据,可能是一个数字,所有是false;下面的问是否是不可获得的,那么nan也是不可获得的
四、组合数据
(1)向量
1、向量可以存储numeric、character、logical等类型
2、用c(x1,x2,x3.....)等构造一个向量
3、一个向量当中的元素必须是一个数据类型的
4、标量是只含有一个元素的特殊向量,创建标量可以不用c()
5、向量的访问:使用下标进行访问[1,2,3](从1开始)
6、冒号操作符:用冒号操作符链接两个整数,可以生成一个步进数列
7、要同时访问数列的多个元素,可以在方括号当中用一个向量做下表
(2)矩阵matrix()
1、matrix是一个二维数组,构成元素必须是同一种数据类型
2、matrix(vector,nrow=num1,ncol=num2)为其构造函数
注意:matrix是将vector当中的元素按照列来排的,并且会自己接着填充进去
就是如果排完了数字还没满足要求,就会重复填充,并且是按照列填充的
3、访问矩阵当中的元素
mymatrix[x,y]
mymatrix[x,]
mymatrix[,y]
plus:其中的x和y不仅可以是标量,也可以是向量
返回的是一个重组的列表
(3)数组(array)
1、数组与矩阵类似,但是维度高于2。数组由函数array()函数创建
2、array(vector,dimension)创建
3、array()函数在填充数据的时候,会首先填充最后一个维度
通过下标访问即可
(4)数据框(data frame)
1、相当于数据库当中的table,是一张二维数据表
2、创建函数:data.frame(col1,col2,col3,col4)
3、访问的时候,使用“$”来访问每一列
4、可以手动指定各列的名字,使用data.frame(colname1=col1,colname2=col2)
5、为每一行命名
mydata<-data.frame(c1,c2,c3,c4,row.names=xxx)
即加上一个参数row.names这个参数
6、重命名列和重命名行
可以直接使用names()和row.names()这两个函数来改列名和行名
7、要访问数据框当中的元素,可以通过下标
·mydata[x,y] 返回第x行第y列元素
·mydata[x] 注意!!返回的是第x列的元素
·访问的时候,行和列的下标可以使用行和列的名称代替
·mydata[x,] 注意加了一个逗号以后返回的是第x行的元素
(5)列表
1、列表是若干个对象的有序集合,列表的元素可以是任意对象
2、用list(name1=object1,name2=object2)函数进行创建,,各元素如果没有特殊字符可以不加双引号
3、可以使用names()函数进行重命名
4、访问列表中的元素
·使用$,使用美元操作符进行访问
·数值下标,例如mylist[[2]],注意要放在双括号内部
·名字下标,例如mylist[["mysalary"]],要放在双括号内部