创建向量和矩阵
- 函数c():用来把一些数据组合成向量
- nchar():主要使用来返回字符长度 length():则是用来返回字符数量
- mode():指变量的类型如:数值型、字符型、逻辑型等 class():指变量的类别如:矩阵、列表、数据框等 typeof():对变量类型的细分
- 函数cbind() 和rbind() 把向量和矩阵拼成一个新的矩阵。 cbind() 把矩阵横向合并成一个大矩阵(列方式),而rbind()是纵向合并(行方式)。
x=c(1,2,3,7,5)
y=3L
a="Jone"
b=c("Tom","Amy","Bob")
#####函数c()#####
x #[1] 1 2 3 7 5
#####length()与nchar()#####
length(x) #5
length(y) #1
length(a) #1
length(b) #3
nchar(x) #1 1 1 1 1
nchar(y) #1
nchar(a) #4
nchar(b) #3 3 3
#####mode()、class()、typeof()#####
mode(x) #"numeric"
mode(y) #"numeric"
mode(a) #"character"
mode(b) #"character"
class(x) #"numeric"
class(y) #"integer"
class(a) #"character"
class(b) #"character"
typeof(x) #"double"
typeof(y) #"integer"
typeof(a) #"character"
typeof(b) #"character"
#####rbind()与cbind()#####
rbind(x,b)
# [,1] [,2] [,3] [,4] [,5]
#x "1" "2" "3" "7" "5"
#b "Tom" "Amy" "Bob" "Tom" "Amy"
cbind(x,b)
# x b
#[1,] "1" "Tom"
#[2,] "2" "Amy"
#[3,] "3" "Bob"
#[4,] "7" "Tom"
#[5,] "5" "Amy"
求值
mean():求算术平均值
sum():求和
min():最小值
max():最大值
var():样本方差
sd():标准差
median():中位数
cov():协方差
cor():相关系数
prod():向量元素乘积,返回所有参数中元素乘积
产生向量
- 基础
A<-1:20 #[1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
A<-1:20*2+2 #[1] 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42
A[-5] #[1] 4 6 8 10 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42
A[5] #[1] 12
A[(1:5)] #[1] 4 6 8 10 12
A[-(1:5)] #[1] 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42
A[1] #[1] 4
A[A[1]] #[1] 10
A[1,2,3] #Error in A[1, 2, 3] : 量度数目不对
c(1,2,3) #[1] 1 2 3
A[c(1,2,3)] #[1] 4 6 8
A[A<20] #[1] 4 6 8 10 12 14 16 18
A[A>20&A<40] #[1] 22 24 26 28 30 32 34 36 38
- Seq()函数:Seq(from,to,by/length)
by = ((to - from)/(length - 1))
seq(1,20) #[1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
seq(1,20,by=2) #[1] 1 3 5 7 9 11 13 15 17 19
seq(1,20,length=10) #[1] 1.000000 3.111111 5.222222 7.333333 9.444444 11.555556 13.666667 15.777778 17.888889 20.000000
seq(1,20,by=2,length=10) #Error in seq.default(1, 20, by = 2, length = 10) : 太多参数
- LETTERS[]:产生大写字母序列;letters[]:产生小写字母序列
letters #[1] "a" "b" "c" "d" "e" "f" "g" "h" "i" "j" "k" "l" "m" "n" "o" "p" "q" "r" "s" "t" "u" "v" "w" "x" "y" "z"
letters[3] #[1] "c"
letters[1,2,3] #Error in letters[1, 2, 3] : 量度数目不对
letters[c(1,2,3)] #[1] "a" "b" "c"
letters[1:30] #[1] "a" "b" "c" "d" "e" "f" "g" "h" "i" "j" "k" "l" "m" "n" "o" "p" "q" "r" "s" "t" "u" "v" "w" "x" "y" "z" NA NA NA NA
新建向量
- which()函数
which.max(a):取数组最大值的下标
which.min(a):取数组最小值的下标
which(a>3):取数组小于3的下标
which(a==3):取数组等于3的下标
which(10:1 %in%a):取数组中在1-10的数
m<-c(2,1,4,3,5,7,8,6,22,90,75,44,32)
m #[1] 2 1 4 3 5 7 8 6 22 90 75 44 32
which.max(m) #[1] 10
which.min(m) #[1] 2
which(m<5) #[1] 1 2 3 4
m[which(m<5)] #[1] 2 1 4 3
which(m==22) #[1] 9
m[which(m==22)] #[1] 22
which(1:80%in%m) #[1] 1 2 3 4 5 6 7 8 22 32 44 75
which(80:1%in%m) #[1] 6 37 49 59 73 74 75 76 77 78 79 80
a=c(1,3,4,5,3,2,5,6,3,2,5,6,7,5,8)
which(10:1%in%a) #[1] 3 4 5 6 7 8 9 10
which(1:10%in%a) #[1] 1 2 3 4 5 6 7 8
- rev():向量倒序/逆转
sort():排序(或命令)一个向量或因素(部分)升序或降序排序
m=1:20
m #[1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
rev(m) #[1] 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1
n=c(2,9,5,4,10,34,24,26,90,6,23,57)
n #[1] 2 9 5 4 10 34 24 26 90 6 23 57
sort(n) #[1] 2 4 5 6 9 10 23 24 26 34 57 90
sort(n,decreasing = F) #[1] 2 4 5 6 9 10 23 24 26 34 57 90
sort(n,decreasing = T) #[1] 90 57 34 26 24 23 10 9 6 5 4 2
rev(sort(n)) #[1] 90 57 34 26 24 23 10 9 6 5 4 2
生成矩阵 函数matrix()
matrix(data, nrow, ncol, byrow, dimnames)
data - 是这成为矩阵的数据元素输入向量。
nrow - 是要创建的行数。
ncol - 要被创建的列的数目。
byrow - 是一个合乎逻辑。如果为True,那么输入向量元素在安排的行。
dimname - 是分配给行和列名称。
matrix(c(1,2,3,4,5,6,7,8,9,10,11,12),3,4)
# [,1] [,2] [,3] [,4]
#[1,] 1 4 7 10
#[2,] 2 5 8 11
#[3,] 3 6 9 12
matrix(c(1,2,3,4,5,6,7,8,9,10,11,12),3,4,T)
# [,1] [,2] [,3] [,4]
#[1,] 1 2 3 4
#[2,] 5 6 7 8
#[3,] 9 10 11 12
matrix(c(1,2,3,4,5,6,7,8,9,10,11,12),3,4,T,dimnames = list(c("row1",'row2','row3'),c('col1','col2','col3','col4')))
# col1 col2 col3 col4
#row1 1 2 3 4
#row2 5 6 7 8
#row3 9 10 11 12
访问矩阵
p=matrix(c(1,2,3,4,5,6,7,8,9,10,11,12),3,4,T,dimnames = list(c("row1",'row2','row3'),c('col1','col2','col3','col4')))
# col1 col2 col3 col4
#row1 1 2 3 4
#row2 5 6 7 8
#row3 9 10 11 12
p[1,3] #[1] 3
p[1,] #col1 col2 col3 col4
#1 2 3 4
p[,3] #row1 row2 row3
#3 7 11
矩阵运算
- 矩阵加减:
- 矩阵相乘:
- 矩阵求逆:solve()函数;奇异矩阵(行列式为0)没有逆矩阵;
- t()函数:矩阵行列转换/转置矩阵
- diag()函数:提取或替换一个矩阵的对角线,或构造一个对角矩阵
- rnorm()函数(正态分布 ):产生一系列的随机数,随机数个数,均值和标准差都可以设定
rnorm(n, x, y): 产生n个平均数为x,标准差为y的数。 默认情况下,平均数为0, 标准差为1- solve()函数:
solve(a):求矩阵a的逆
solve(a,b):求解线性方程- eigen()函数:求解矩阵的特征值与特征向量
> e=matrix(c(1:9),3,3)
> e
[,1] [,2] [,3]
[1,] 1 4 7
[2,] 2 5 8
[3,] 3 6 9
> f=matrix(c(11:19),3,3)
> f
[,1] [,2] [,3]
[1,] 11 14 17
[2,] 12 15 18
[3,] 13 16 19
> #加法:
> e+f
[,1] [,2] [,3]
[1,] 12 18 24
[2,] 14 20 26
[3,] 16 22 28
> #减法:
> e-f
[,1] [,2] [,3]
[1,] -10 -10 -10
[2,] -10 -10 -10
[3,] -10 -10 -10
> f-e
[,1] [,2] [,3]
[1,] 10 10 10
[2,] 10 10 10
[3,] 10 10 10
> #乘法:
> e*f
[,1] [,2] [,3]
[1,] 11 56 119
[2,] 24 75 144
[3,] 39 96 171
> e%*%f
[,1] [,2] [,3]
[1,] 150 186 222
[2,] 186 231 276
[3,] 222 276 330
> #除法:
> e/f
[,1] [,2] [,3]
[1,] 0.09090909 0.2857143 0.4117647
[2,] 0.16666667 0.3333333 0.4444444
[3,] 0.23076923 0.3750000 0.4736842
> f/e
[,1] [,2] [,3]
[1,] 11.000000 3.500000 2.428571
[2,] 6.000000 3.000000 2.250000
[3,] 4.333333 2.666667 2.111111
> f%/%e
[,1] [,2] [,3]
[1,] 11 3 2
[2,] 6 3 2
[3,] 4 2 2
> #求余:
> e%%f
[,1] [,2] [,3]
[1,] 1 4 7
[2,] 2 5 8
[3,] 3 6 9
> #矩阵行列转换:
> t(e)
[,1] [,2] [,3]
[1,] 1 2 3
[2,] 4 5 6
[3,] 7 8 9
> t(f)
[