关闭

【已解决】R语言添加行、列,转置操作

标签: R语言添加行列矩阵转置
65人阅读 评论(0) 收藏 举报
分类:

严格来说,矩阵的长度和维度是固定的,因此不能增加或删除行或列。但是可以给矩阵重新赋值,这样可以得到和增加或删除一样的效果。

 

    函数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]

[1,]    2    1    1    1

[2,]    2    2    1    0

[3,]    2    3    0    1

[4,]    2    4    0    0

注:这里用到了循环补齐(recycling)。

    这里,cbind()把一列由1组成的向量和z组合在一起,创建了一个新矩阵。

 

    不过,请谨慎使用cbind()!和创建向量一样,创建一个新的矩阵是很耗时间的(毕竟矩阵也属于向量)。创建新矩阵会减低程序速度,如果在循环中重复创建矩阵,将浪费大量的时间。因此在循环中每次往矩阵中添加一行(列),最后矩阵会变成一个大矩阵,这种做法是不可取的,最好一开始就定义好一个大矩阵。这个事先定义的矩阵是空的,但是在循环过程中逐行或列进行赋值,这种做法避免了循环过程中每次进行耗时的矩阵内存分配。


处理矩阵转置问题:

> tx<- read.table("x.txt", header=FALSE)

> ty<- t(tx)

> write.table(ty, file="D:/ty.txt", quote-F, col.name=F, row.names=F)


参考文章:

http://blog.csdn.net/thoixy/article/details/40502829

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:352515次
    • 积分:5654
    • 等级:
    • 排名:第4894名
    • 原创:234篇
    • 转载:62篇
    • 译文:3篇
    • 评论:40条
    最新评论