R如何使用循环函数创建矩阵

R如何使用循环函数创建矩阵,r,matrix,R,Matrix,我想创建一个由一系列较小矩阵组成的大型矩阵。有30个小的30 x 3153矩阵。每个都只有一行1,其余都是0。1行的位置从1变为30。例如,在第1个矩阵中,1位于第1行,第2个矩阵位于第2行,等等 由于我是编程新手,我不知道如何使用循环函数来实现这一点。我不知道如何将变量传递给循环函数 这是我试过的 创建了0和1的两个向量。 构建了一个29 x 3153的矩阵,只有0。 使用miscTools包中的insertRow功能将1插入相应位置 然后cbind all matrix创建我想要的大矩阵。

我想创建一个由一系列较小矩阵组成的大型矩阵。有30个小的30 x 3153矩阵。每个都只有一行1,其余都是0。1行的位置从1变为30。例如,在第1个矩阵中,1位于第1行,第2个矩阵位于第2行,等等

由于我是编程新手,我不知道如何使用循环函数来实现这一点。我不知道如何将变量传递给循环函数

这是我试过的

创建了0和1的两个向量。 构建了一个29 x 3153的矩阵,只有0。 使用miscTools包中的insertRow功能将1插入相应位置 然后cbind all matrix创建我想要的大矩阵。 我被困在如何使用循环来实现这一点。如果有人能帮助我,我将不胜感激。谢谢

vec0=rep.int(0,n)
vec1=rep.int(1,n)
uij=matrix(rep(vec0,c-1),nrow=c-1,ncol=n)

Uij=cbind(lapply(uij,insertRow(uij,i,vec1)))

想象一下大矩阵的每一行将是什么样子:

1 - 29 times 0 - 0 - 1 - 28 times 0 - 0 - 0 - 1 - 27 times 0 - ...
所以基本上你有:

[1 - 30 times 0] x 30 times - 1
这在3153行中重复

因此,您只需使用:

row <- c(rep( c(1, rep(0, 30)), 30), 1)
m <- matrix(rep(row, 3153), nrow=3153)

想象一下大矩阵的每一行将是什么样子:

1 - 29 times 0 - 0 - 1 - 28 times 0 - 0 - 0 - 1 - 27 times 0 - ...
所以基本上你有:

[1 - 30 times 0] x 30 times - 1
这在3153行中重复

因此,您只需使用:

row <- c(rep( c(1, rep(0, 30)), 30), 1)
m <- matrix(rep(row, 3153), nrow=3153)

试试1:10圈,功能i插入Rowuij,i,Vec1谢谢!这就是我一直在找的。试试1:10圈,函数insertrowuij,I,vec1Thanks!这正是我一直在寻找的。谢谢,太好了!嗨,我有一个后续问题。我想将矩阵构建为稀疏矩阵以节省内存。我将第一行修改为mat@qshngv请参见我上面的编辑,而且您应该避免在R(如c)中命名具有其他赋值的对象,如果您使用的是依赖于包的函数,那么提供依赖于包的包的名称是很好的方式,这很整洁!嗨,我有一个后续问题。我想将矩阵构建为稀疏矩阵以节省内存。我将第一行修改为mat@qshngv,请参见上面的编辑,您也应该避免命名在R中有其他赋值的对象,比如c,如果您使用的是包相关函数,那么提供相关包的名称是很好的方式