R语言--12

数组(array)
数组是k维的数据表。向量(n=1),矩阵(n=2),高维数组(n>=3)

矩阵的生成及基本操作

matrix(data = NA, nrow = 1, ncol = 1, byrow = FALSE,
dimnames = NULL):
data可以为一个向量,nrow/ncol为指定生成的行数和列数,byrow:设定向量排布成指定的行数和列数时,按照行排列,默认是按列排布。dimnames:设定行名和列名。
colnames()/rownames():与向量的names函数作用类似,赋值可以设定行名和列名。
ncol()/nrow():显示矩阵的行数和列数
dim():返回行数、列数的含有两个元素的向量。

###创建矩阵
> A <- matrix(1:6, nrow=3, ncol=2)
> A
     [,1] [,2]
[1,]    1    4
[2,]    2    5
[3,]    3    6
> B <- matrix(1:6, nrow=3, ncol=2,byrow=T)
> B
     [,1] [,2]
[1,]    1    2
[2,]    3    4
[3,]    5    6
###给矩阵添加行名和列名
> colnames(A) <- c('X', 'Y')
> rownames(A) <- c('a', 'b', 'c')
> A
  X Y
a 1 4
b 2 5
c 3 6
###显示行列数目的函数
> nrow(A)
[1] 3
> ncol(A)
[1] 2
> dim(A)
[1] 3 2
> dim(A)[1]#dim():返回行数、列数的含有两个元素的向量
[1] 3
> dim(A)[2]
[1] 2

索引矩阵中想要的元素

> A
  X Y
a 1 4
b 2 5
c 3 6
> A[1,1]
[1] 1
> A[1,]  
X Y 
1 4 
> A[,1]
a b c 
1 2 3 
> A[c(1,3), 1:2]#同向量索引,不过用[,]索引
  X Y
a 1 4
c 3 6
> A[,'Y']#根据名称索引,与位置索引一致
a b c 
4 5 6 
> A['b',]
X Y 
2 5 
> A[c('a', 'c'), 'Y']
a c 
4 6 

cbind()和bind()函数

cbind()和rind():按行或列合并,注意合并时对应的行数和列数要与原数组相等。

> A
  X Y
a 1 4
b 2 5
c 3 6
> cbind(c(1,2), c(3,4), c(5,6))
     [,1] [,2] [,3]
[1,]    1    3    5
[2,]    2    4    6
> cbind(A, c(7,8,9))
  X Y  
a 1 4 7
b 2 5 8
c 3 6 9
> rbind(A,c(8,8))
  X Y
a 1 4
b 2 5
c 3 6
  8 8
> D=rbind(A,c(8,8))
> rownames(D)[4]="d"#rownames()返回行名的一个向量,用赋值的方法修改行名
> D
  X Y
a 1 4
b 2 5
c 3 6
d 8 8

应用:apply()函数对行列进行统计运算,如均值和标准误

tapply()函数是apply()函数的一种,apply()函数的应用方式与之相似,tapply()函数是对按照因子分类的向量进行统计运算,apply()函数是按行列进行统计运算。

> A
  X Y
a 1 4
b 2 5
c 3 6
> apply(A,2,mean)
X Y 
2 5 
> apply(A,1,mean)
  a   b   c 
2.5 3.5 4.5 
> stderr <- function(x) sqrt(var(x)/length(x))
> apply(A,1,stderr)
  a   b   c 
1.5 1.5 1.5 

你可能感兴趣的:(R语言--12)