严格来说,矩阵的长度和维度是固定的,因此不能增加或删除行或列。但是可以给矩阵重新赋值,这样可以得到和增加或删除一样的效果。
函数rbind()(代表row bind,按行组合)和函数cbind()(代表column bind,按列组合)可以给矩阵增加行或列。
> one <- c( 1, 1, 1, 1 )
> z <- matrix( c( 1, 2, 3, 4, 1, 1, 0, 0, 1, 0, 1, 0 ),nrow=4 )
> cbind( one, z )
one
[1,]1 1 1 1
[2,]1 2 1 0
[3,]1 3 0 1
[4,]1 4 0 0
> cbind( 2, z )
[,1] [,2] [,3] [,4]
【R(增加或删除矩阵的行或列)】[1,]2111
[2,]2210
[3,]2301
[4,]2400
注:这里用到了循环补齐(recycling)。
这里,cbind()把一列由1组成的向量和z组合在一起,创建了一个新矩阵。
不过,请谨慎使用cbind()!和创建向量一样,创建一个新的矩阵是很耗时间的(毕竟矩阵也属于向量)。创建新矩阵会减低程序速度,如果在循环中重复创建矩阵,将浪费大量的时间。因此在循环中每次往矩阵中添加一行(列),最后矩阵会变成一个大矩阵,这种做法是不可取的,最好一开始就定义好一个大矩阵。这个事先定义的矩阵是空的,但是在循环过程中逐行或列进行赋值,这种做法避免了循环过程中每次进行耗时的矩阵内存分配。
推荐阅读
- R|【R数据可视化手册】笔记1-条形图
- 数据挖掘|决策树
- R|时间序列分析记录一
- R语言(生成正态分布数据生成--rnorm,dnorm,pnorm,qnorm)
- R|不同方法的正态性检验及R语言实现
- matlab直接保存图形而不显示图形
- R|记一次R的可视化使用-生成城市各个景点的多边形图
- 数据挖掘|使用R完成均值检验
- R|使用R完成决策树分类