说明:
1、R语言中下标从1开始
2、R语言里的TRUE要全部大写
向量 c
向量中所有元素的类型要相同,标量是只有一个元素的特殊向量
#R语言向量切片
> a<-c(1,2,3,4,5,6) #构造一个向量
> a[3] #取向量的第3个元素
[1] 3
> a[1:3] #取向量的第1-3个元素(包头并且包尾,一共3个数)
[1] 1 2 3
> a[1,3] #用冒号分隔min index和max index,使用逗号会报错
Error in a[1, 3] : incorrect number of dimensions
> a[0:3]
[1] 1 2 3
> a[:3] #不可以缺省min index和max index其中任何一个
Error: unexpected ':' in "a[:"
> a[1:]
Error: unexpected ']' in "a[1:]"
> a[0:20] #当取的max index大于原始值时语言会自动以NA填充
[1] 1 2 3 4 5 6 NA NA NA NA NA NA NA NA NA NA NA NA NA NA
矩阵 matrix
矩阵相当于一个二维数组,所有元素的类型要相同
#R语言矩阵填充参数byrow
> b<-matrix(1:20,nrow=5,ncol=4,byrow=TRUE) #按行填充
> b
[,1] [,2] [,3] [,4]
[1,] 1 2 3 4
[2,] 5 6 7 8
[3,] 9 10 11 12
[4,] 13 14 15 16
[5,] 17 18 19 20
> c<-matrix(1:20,nrow=5,ncol=4,byrow=FALSE) #按列填充
> c
[,1] [,2] [,3] [,4]
[1,] 1 6 11 16
[2,] 2 7 12 17
[3,] 3 8 13 18
[4,] 4 9 14 19
[5,] 5 10 15 20
#R语言矩阵行列命名
> colnames<-c("col1","col2") #colnames要是字符型向量char vector
> rownames<-c("row1","row2")
> c<-matrix(1:4,nrow=2,ncol=2,byrow=TRUE,dimnames = list(rownames,colnames))
> c
col1 col2
row1 1 2
row2 3 4
#R语言矩阵切片
> c[,] #不输数字默认全部行列都要
col1 col2
row1 1 2
row2 3 4
row3 5 6
row4 7 8
> c[2,] #第2行,所有列
col1 col2
3 4
> c[,2] #第2列,所有行
row1 row2 row3 row4
2 4 6 8
> c[3,2] #第3行,第二列
[1] 6
> c[1:3,2] #1-3行的第二列
row1 row2 row3
2 4 6
> c[1:3,1:2] #1-3行的1-2列
col1 col2
row1 1 2
row2 3 4
row3 5 6
> c[c(1,3),1:2] #不想取连续的几行怎么办?用向量,直接跳过了第二行
col1 col2
row1 1 2
row3 5 6
> c[1:3,c(1)] #不想取连续的几列怎么办?同理也可以用向量
row1 row2 row3
1 3 5
数据框 data.frame
数据框中包含多种类型的数据
#data frame 操作
> age<-c(10,20,30,40,10,20)
> money<-c("much","a little","no money","a little","no money","no money")
> name<-c("Amy","Lily","Tom","Sam","David","Anna")
> df<-data.frame(name,age,money)
> df[c("name","age")]
name age
1 Amy 10
2 Lily 20
3 Tom 30
4 Sam 40
5 David 10
6 Anna 20
#以变量名取数据框中的一个变量
> df["name"]
name
1 Amy
2 Lily
3 Tom
4 Sam
5 David
6 Anna
#以数字列索引取数据框中的连续多个变量
> df[1:2]
name age
1 Amy 10
2 Lily 20
3 Tom 30
4 Sam 40
5 David 10
6 Anna 20
#获取数据框中的联列表
#其中的数值相当于select age,money,count(1)...group by age,money
> table(df$age,df$money)
a little much no money
10 0 1 1
20 1 0 1
30 0 0 1
40 1 0 0
数组 array
数组跟矩阵的区别就是数组的维度可以>2。
列表 list
列表就是一些对象的有序集合。
列表中可以是各种类型的对象,最复杂,什么结构都可以有。
因子 factor
R语言中,因子(factor)是分类变量(包括名义型+有序型)。
名义型变量就是无序分类变量,有序的分类变量叫做有序型变量。
函数factor()以一个整数向量的形式存储类别值,整数的取值范围是[1… k ](其中k 是名义型变量中唯一值的个数),同时一个由字符串(原始值)组成的内部向量将映射到这些整数上。要表示有序型变量,需要为函数factor()指定参数ordered=TRUE,并以levels向量指定排序规则否则会默认以char_vector中各元素的首字母从a-z排序。
#有序变量
#使用levels自定义变量的排序规则,从左往右:从小到大
> monney_f<-factor(money,ordered=TRUE,levels = c("no money","a little","much"))
> monney_f
[1] much a little no money a little no money no money
Levels: no money < a little < much