R中的嵌套双循环

时间:2018-01-22 23:16:29

标签: r

mat <- matrix(0,ncol=6, nrow=100)
d=c(1,2,4,8,16,32)
for(i in 1:6)
{
  for(j in d)
  {
    mat[,i]=rep(j,100)
  }
}
mat

我应该得到一个100 x 6的矩阵,其中1,2,4,8,16,32列。但是,我只是在每列中获得32行。有谁知道如何解决这个问题。我确实想要使用循环,即使它的一个循环很好。

2 个答案:

答案 0 :(得分:0)

根据您的描述:100行x 6列,第1列=值1 ...第6列=值32,这应该生成您想要的内容。

matrix(data = rep(c(1,2,4,8,16,32), each = 100), 
       nrow = 100, 
       ncol = 6)

答案 1 :(得分:0)

@neilfws的答案更优雅。如果您因某种原因致力于使用循环,则可以执行此操作

mat <- matrix(0,ncol=6, nrow=100)
d=c(1,2,4,8,16,32)
for(i in 1:6)
{
  j <- d[i]

    mat[,i]=rep(j,100)

}
mat

问题是你在每列中循环遍历所有d。