R 复杂数据类型third day
#矩阵
是将R行和列组成的数组 数据元素要求是同一种类型
函数:
matrix
data 矩阵的元素向量的形式
nrow 行数
ncol 列数
byrow 是否按照行排列 默认是列排序 true 按行 false 按列
dimnames 可选 对行列进行命名
m<-matrix(1:6,nrow=2,ncol=3,byrow =T,dimnames =list(c('r1','r2'),c('c1','c2','c3')))
加入byrow 进行排列
m<-matrix(1:6,nrow=2,ncol=3,dimnames =list(c('r1','r2'),c('c1','c2','c3')))
数值访问矩阵元素
m[1,1] 1行1列
m[1,] 第一行
m[,1]第一列
逻辑访问矩阵元素
m[c(T,F),] 第一行
行的名字进行访问
m['r1',] 第一行
#编辑元素
m[1,]<-c(100,99,98)
批量赋值整行
m[1,]<-100 第一行r1的长度为3,100是1个长度,100会被使用三次
矩阵转置
t(m) 列变行 行变列
#数组 数据类型也是统一的
?array
#data 向量
#dim 维度
#dimnames 维度名称的列表 可选
array(1:10) #一维的数组就是向量
array(1:10,dim = c(2,5))#矩阵
dim1<-c('A1','A2')
dim2<-c('B1','B2','B3')
dim3<-c('C1','C2')
arry3<-array(1:12,c(2,3,2),dimnames = list(dim1,dim2,dim3))
array(1:12,c(2,3,2))#三维数组 创建两个矩形矩阵 每2行3列
arry3[,,'C1']
arry3[,,1]
arry3[,,c(T,F)]
#数据框 可以包含各种数据类型 每列叫做变量 每行叫做观测样本
data.frame()
student<-data.frame(ID=c(1001,1002,1003),
NAME=c('lili','bobo','sam'),
GENDER=c('F','M','M')) #会把类型转换为因子
student<-data.frame(ID=c(1001,1002,1003),
NAME=c('lili','bobo','sam'),
GENDER=c('F','M','M'),stringsAsFactors = F) #加上参数string关闭转换
student[1,1]
student[1,]
student[,1]
student['ID']
student[,'ID']
student$ID
student[c('ID','NAME')]
student[1,1]<-1009
student[c('ID','NAME')]
#列表 最复杂 可以包含各种元素
list()
list1<-list(a=1,b='char',c=m,d=student)
list1[[1]]
list1[['a']]
list1[[4]] #访问需要加双重[[]]
list1[4]
class(list1[4])
总结
1、 操作题:
将 1,2,3,…,12 构成两个 3*4 的矩阵,矩阵 A 是按列输入,矩阵 B 是按行输入。
2、 操作题:
将矩阵 B 的第一列的元素都改成 100.
3、 操作题:
ID name weight
1 张三 60
2 李四 70
3 王五 80
创建数据框将它命名成 wtdata,要求第一、三列的数据类型是数值型的,第二列数据类
型是字符型的。
4、 操作题:
返回数据框 wtdata 第一、三行的信息
5、 操作题:
创建一个列表,将它命名成 wtlist,列表的长度是 3,列表的第 1 个元素是矩阵 A,列
表的第 2 个元素是矩阵 B,列表的第 3 个元素是 wtdata
6、 操作题:
返回列表 wtlist 第 1 个元素的信息。
1.A<-matrix(1:12,nrow = 3,ncol = 4,)
A
B<-matrix(1:12,nrow = 3,ncol = 4,byrow = T)
B
B[1,]<-c(1,2,3,4)
B
2.B[,1]<-100
B
B[,1]<-1,5,9
3.peson<-data.frame(ID=c(1,2,3),name=c('张三','李四','王五'),weight=c(60,70,80),stringsAsFactors = F)
4.peson[c(1,3)]
peson[c(T,F,T)]
peson[2,3]
5.wtlist<-list(a=A,b=B,c=peson)
6.wtlist[1]
wtlist[[1]]