楼主: Hello_cy
22359 9

[问答] R列向量合成矩阵 [推广有奖]

  • 1关注
  • 0粉丝

高中生

55%

还不是VIP/贵宾

-

威望
0
论坛币
95 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
1243 点
帖子
15
精华
0
在线时间
40 小时
注册时间
2013-6-24
最后登录
2016-8-24

楼主
Hello_cy 发表于 2014-9-15 20:10:45 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
问,各位大神:
    R怎样将多个列向量合并成一个矩阵?(注:各个列向量为for循环产生,求如何用cbind(…)合成一个矩阵,这里列向量较多,不适合一个一个输入)
还请各大神不吝赐教,非常感谢~

附注:一小段程序:
c1=as.matrix(c(rep(0,0),rep(1,3),rep(0,15)))
c2=as.matrix(c(rep(0,3),rep(1,3),rep(0,12)))
c3=as.matrix(c(rep(0,6),rep(1,3),rep(0,9)))
c4=as.matrix(c(rep(0,9),rep(1,3),rep(0,6)))
c5=as.matrix(c(rep(0,12),rep(1,3),rep(0,3)))
c6=as.matrix(c(rep(0,15),rep(1,3),rep(0,0)))
Z=cbind(c1,c2,c3,c4,c5,c6)

需要要生成的是Z形式的矩阵;而ci用的是for循环来实现:
for(i in 1:n)
{
ci=as.matrix(c(rep(0,(i-1)*3),rep(1,3),rep(0,(n.tot-3i))))

}
不知Z如何用循环生成(Z=cbind(c1,c2,…,cn))
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:列向量合成矩阵 matrix for循环 bind 非常感谢 列向量合成矩阵

沙发
xucaifeng66 发表于 2014-9-16 17:06:35
在循环之前先生成一个矩阵,然后在循环中对矩阵赋值

藤椅
daishen 发表于 2014-9-16 19:51:56
使用 for还是不用R了,使用R有一条戒律,放弃 for.


n = 15
fun = function(x) c(rep(0,(x-1)*3),rep(1,3),rep(0,15 - 3*x))
sapply(1:5,function(i) fun(i))
      [,1] [,2] [,3] [,4] [,5]
[1,]    1    0    0    0    0
[2,]    1    0    0    0    0
[3,]    1    0    0    0    0
[4,]    0    1    0    0    0
[5,]    0    1    0    0    0
[6,]    0    1    0    0    0
[7,]    0    0    1    0    0
[8,]    0    0    1    0    0
[9,]    0    0    1    0    0
[10,]    0    0    0    1    0
[11,]    0    0    0    1    0
[12,]    0    0    0    1    0
[13,]    0    0    0    0    1
[14,]    0    0    0    0    1
[15,]    0    0    0    0    1
已有 1 人评分经验 收起 理由
李会超 + 60 热心帮助其他会员

总评分: 经验 + 60   查看全部评分

板凳
一路嘿嘿 发表于 2014-9-17 09:12:52
  1. do.call(cbind,list(c1,c2,c2))
复制代码

报纸
Hello_cy 发表于 2014-9-17 11:55:45
daishen 发表于 2014-9-16 19:51
使用 for还是不用R了,使用R有一条戒律,放弃 for.
哇 谢谢 谢谢~这个太有用了~
还请问这个从哪学的啊,要是你不说我真没见过!

地板
Hello_cy 发表于 2014-9-17 11:56:27
xucaifeng66 发表于 2014-9-16 17:06
在循环之前先生成一个矩阵,然后在循环中对矩阵赋值
这个一直没弄懂怎么弄啊~不过还是谢了~

7
Hello_cy 发表于 2014-9-17 11:56:40
xucaifeng66 发表于 2014-9-16 17:06
在循环之前先生成一个矩阵,然后在循环中对矩阵赋值
这个一直没弄懂怎么弄啊~不过还是谢了~

8
Hello_cy 发表于 2014-9-17 11:56:57
xucaifeng66 发表于 2014-9-16 17:06
在循环之前先生成一个矩阵,然后在循环中对矩阵赋值
这个一直没弄懂怎么弄啊~不过还是谢了~

9
DM小菜鸟 发表于 2014-12-6 20:56:03

for(i in 1:n){

ci=as.matrix(c(rep(0,(i-1)*3),rep(1,3),rep(0,(n.tot-3i))))

If (i > 1) {

       Zi = cbind(Zi-1,Ci);

       }

Else{

        Zi = Ci;

      }

}


10
AthenaUchiha 发表于 2015-3-17 15:52:51
感谢楼主的分享

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-27 01:32