a=sample(1:100,10)
a
[1] 54 8 74 53 45 90 28 77 85 95
order(a)
[1] 2 7 5 4 1 3 8 9 6 10
a(order(a))
Error in a(order(a)) : could not find function “a”
a[order(a)]
[1] 8 28 45 53 54 74 77 85 90 95
sort(a)
[1] 8 28 45 53 54 74 77 85 90 95
找出最大值:
which(a==max(a))
[1] 10
创建矩阵:
x=matrix(1:20,4,5)
x
[,1] [,2] [,3] [,4] [,5]
[1,] 1 5 9 13 17
[2,] 2 6 10 14 18
[3,] 3 7 11 15 19
[4,] 4 8 12 16 20
x=matrix(runif(10),2,5)
x
[,1] [,2] [,3] [,4] [,5]
[1,] 0.9589766 0.9898391 0.6158902 0.44428185 0.50829357
[2,] 0.6122374 0.6831678 0.1218521 0.03017459 0.02119341
x=matrix(1:20,4,5,byrow=T);
x
[,1] [,2] [,3] [,4] [,5]
[1,] 1 2 3 4 5
[2,] 6 7 8 9 10
[3,] 11 12 13 14 15
[4,] 16 17 18 19 20
转置矩阵:
t(x)
[,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
创建矩阵的方法2:
使用array()
a=array(runif(10),c(2,5))
a
[,1] [,2] [,3] [,4] [,5]
[1,] 0.4466296 0.7148423 0.5686445 0.100598150 0.4255526
[2,] 0.7764345 0.5430266 0.4743980 0.004012793 0.8803468
is.matrix(a)
[1] TRUE
a[1,1]
[1] 0.4466296
a[1,]
[1] 0.4466296 0.7148423 0.5686445 0.1005981 0.4255526
a[,2]
[1] 0.7148423 0.5430266
dim(a)
[1] 2 5
创建三维数组:
> a=array(runif(9),c(3,3,3))
> a
, , 1
[,1] [,2] [,3]
[1,] 0.6668854 0.86824556 0.8454176
[2,] 0.4295950 0.04828795 0.3599318
[3,] 0.6663312 0.02693513 0.6149535
, , 2
[,1] [,2] [,3]
[1,] 0.6668854 0.86824556 0.8454176
[2,] 0.4295950 0.04828795 0.3599318
[3,] 0.6663312 0.02693513 0.6149535
, , 3
[,1] [,2] [,3]
[1,] 0.6668854 0.86824556 0.8454176
[2,] 0.4295950 0.04828795 0.3599318
[3,] 0.6663312 0.02693513 0.6149535
> is.array(a)
[1] TRUE
> is.matrix(a)
[1] FALSE
> x=array(1:12,c(2,3,2))
> x
, , 1
[,1] [,2] [,3]
[1,] 1 3 5
[2,] 2 4 6
, , 2
[,1] [,2] [,3]
[1,] 7 9 11
[2,] 8 10 12
矩阵运算:
乘法使用 %*%
> a=matrix(1:6,2,3);b=matrix(2:7,3,2);
> a
[,1] [,2] [,3]
[1,] 1 3 5
[2,] 2 4 6
> b
[,1] [,2]
[1,] 2 5
[2,] 3 6
[3,] 4 7
> a%*%b
[,1] [,2]
[1,] 31 58
[2,] 40 76
求矩阵a的第一维度的均值:
也就是各行的均值
> apply(a,1,mean)
[1] 3 4
求矩阵b的第二维度的均值:
也就是各列的均值
apply(a,2,mean)
[1] 1.5 3.5 5.5
对矩阵的第二维度求和:
apply(a,2,sum)
[1] 3 7 11
对矩阵的第二维度求乘积:
apply(a,2,prod)
[1] 2 12 30
是乘法,但不是矩阵乘法的表达法:
sweep(a,1,1:2,"*")
[,1] [,2] [,3]
[1,] 1 3 5
[2,] 4 8 12
是加法,但不是矩阵加法的表达法:
sweep(a,2,1:3,"+")
[,1] [,2] [,3]
[1,] 2 5 8
[2,] 3 6 9
矩阵乘法:
a*1:3
[,1] [,2] [,3]
[1,] 1 9 10
[2,] 4 4 18
求矩阵属性:
attributes(a)
$dim
[1] 2 3
给矩阵的各行各列标注名字:
x=matrix(1:12,nrow=3,dimnames=list(c(“I”,“II”,“III”),paste(“x”,1:4,sep=" “)))
x
x 1 x 2 x 3 x 4
I 1 4 7 10
II 2 5 8 11
III 3 6 9 12
x=matrix(1:12,nrow=3,dimnames=list(c(“I”,“II”,“III”),paste(“x”,1:4,sep=”")))
x
x1 x2 x3 x4
I 1 4 7 10
II 2 5 8 11
III 3 6 9 12
> y=array(1:12,c(3,2,2),dimnames=list(c("I","II","III"),paste("x",1:2,sep=""),paste("y",1:2,sep="")))
> y
, , y1
x1 x2
I 1 4
II 2 5
III 3 6
, , y2
x1 x2
I 7 10
II 8 11
III 9 12
关于data.frame
:
x=matrix(1:6,2,3)
x
[,1] [,2] [,3]
[1,] 1 3 5
[2,] 2 4 6
x=as.data.frame(x)
x
V1 V2 V3
1 1 3 5
2 2 4 6
x$V1
[1] 1 2
attributes(x)
$names
[1] “V1” “V2” “V3”
$class
[1] “data.frame”
$row.names
[1] 1 2
> names(x)=c("a","b","c")
> row.names(x)=c("1","2")
> x
a b c
1 1 3 5
2 2 4 6
> row.names(x)=c("I","II")
> x
a b c
I 1 3 5
II 2 4 6
> x$a
[1] 1 2
输入数据:
使用函数scan(),并以两次enter
结尾:
x=scan()
1: 1 2 3
4: 4 5 6
7: 1 2 3
10:
Read 9 items
x
[1] 1 2 3 4 5 6 1 2 3
计数并列成表格:
使用函数table()
x=c(“Yes”,“No”,“No”)
table(x)
x
No Yes
2 1
factor(x)
[1] Yes No No
Levels: No Yes
C盘用户名如果是中文,绘画不出图,解决方案:
画图前使用dev.new()
画图后使用dev.off()
出图结果如下: