基本的数据类型和操作
向量
向量的生成方法
#-------------------- 生成向量 ----------------------------
v1=c(0,2,4,6,8) #创建向量
v2=c(1,3,5,7,9)
v3=1:10 #创建1到10公差为1的向量
v4=1:10-1 #创建0:9公差为1的向量
v5=1:10*2+1 #y=2x+1,x=1~10
v6=1:10**2 #y=x^2,x=1~10
v7=seq(5,20)
v8=seq(5,94,by=2) #产生5到93公差为2的等差数列
v9=seq(5,95,length=10) #产生10个5到95的等差数列
a=c(2,3,4,5,6,3,2,2,5,8,9)
which.max(a) #11,向量中最大元素所在的位置
which.min(a) #1,向量中最小元素所在的位置
a[which.max(a)] #9,向量中最大元素所在的位置的值
a[which.min(a)] #2,向量中最小元素所在的位置的值
which(a==2) #1 7 8向量中值为2的元素所在的位置的值
which(a>5) #5 10 11向量中值大于5的元素所在的位置
a[which(a>5)] #1 7 8向量中值大于5的元素所在的位置的值
矩阵运算
#--------------------- 向量运算 --------------------------------
v=c(0,10,4,6,8)
length(v) #5,获得向量的长度
mode(v) #numeric,获得向量的类型
rev(v) # 8 6 4 10 0
sort(v) #正向排序
rev(sort(v)) #反向排序
矩阵
生成矩阵
#-------------------- 生成矩阵 ----------------------------
m1=rbind(v1,v2) #把向量组合成行矩阵
m2=cbind(v1,v2) #把向量组合成列矩阵
m3=c(1:12)
matrix(m3,nrow = 3,ncol = 4)
"
[,1] [,2] [,3] [,4]
[1,] 1 4 7 10
[2,] 2 5 8 11
[3,] 3 6 9 12
"
matrix(m3,nrow = 4,ncol = 3)
"
[,1] [,2] [,3]
[1,] 1 5 9
[2,] 2 6 10
[3,] 3 7 11
[4,] 4 8 12
"
matrix(m3,nrow = 4,ncol = 3,byrow = T)
"
[,1] [,2] [,3]
[1,] 1 2 3
[2,] 4 5 6
[3,] 7 8 9
[4,] 10 11 12
"
矩阵运算
#-------------------- 矩阵运算 ----------------------------------
m1=m2=matrix(1:12,nrow = 3,ncol = 4)
t(m1) #转秩
m1+m2 #加法
m1-m2 #减法
m3=matrix(1:12,nrow = 3,ncol = 4)
m4=matrix(1:12,nrow = 4,ncol = 3)
m3%*%m4 #乘法
m5=matrix(1:16,nrow = 4,ncol = 4)
#如果v是向量,diag(v)返回一个由v的元素为对角元素的对角矩阵。
#如果v为矩阵,diag(v)返回一个由v主对角元素组成的向量。
#如果v只是一个数值,那么diag(v)是一个vXv的单位矩阵。
diag(m5) #提取对角元素1 6 11 16
diag(diag(m5))
"
[,1] [,2] [,3] [,4]
[1,] 1 0 0 0
[2,] 0 6 0 0
[3,] 0 0 11 0
[4,] 0 0 0 16
"
diag(4)
"
[,1] [,2] [,3] [,4]
[1,] 1 0 0 0
[2,] 0 1 0 0
[3,] 0 0 1 0
[4,] 0 0 0 1
"
diag(4)+1
"
[,1] [,2] [,3] [,4]
[1,] 2 1 1 1
[2,] 1 2 1 1
[3,] 1 1 2 1
[4,] 1 1 1 2
"
m6=diag(4)
solve(m6) #求逆矩阵
"
[,1] [,2] [,3] [,4]
[1,] 1 0 0 0
[2,] 0 1 0 0
[3,] 0 0 1 0
[4,] 0 0 0 1
"
x=c(1:100) #创建1到100的公差为1的向量
print(x[5]) #获取第5个元素值
print(x[-5]) #获取除了第5个元素值
mean=mean(x) #计算平均值
sumx=sum(x) #求和
maxx=max(x) #最大值
minx=min(x) #最大值
varx=var(x) #样本方差
prodx=prod(x) #计算向量元素乘积
sdx=sd(x) #计算标准差
数据框
#----------------------- 数据框 --------------------------------
d1=c(12,13,14,15,16,17,18,19,20,21)
d2=c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
d=data.frame(d1,d2) #d1和d2的长度必须相同
print(d)