说明:
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