R 为循环中矩阵的一列赋值
我想知道是否有一种简单的方法可以使用“for”循环生成具有顺序名称的矩阵列表,然后给出其中一列的值R 为循环中矩阵的一列赋值,r,for-loop,matrix,R,For Loop,Matrix,我想知道是否有一种简单的方法可以使用“for”循环生成具有顺序名称的矩阵列表,然后给出其中一列的值 for(i in 1:3) { assign(paste0("matrix",i), matrix(NA, nrow = 4, ncol = 6)) assign(get(paste0("matrix",i))[,1], rep(i, 4)) } 在上面的代码中,我尝试创建3个矩阵matrix1、matrix2和matrix3,它们的第一列旨在分配rep(1,4)、rep(2,4)、re
for(i in 1:3)
{
assign(paste0("matrix",i), matrix(NA, nrow = 4, ncol = 6))
assign(get(paste0("matrix",i))[,1], rep(i, 4))
}
在上面的代码中,我尝试创建3个矩阵matrix1、matrix2和matrix3,它们的第一列旨在分配rep(1,4)、rep(2,4)、rep(3,4)的值。但是,R给出了一条错误消息
Error in assign(get(paste0("matrix", i))[, 1], rep(i, 4)) :
invalid first argument
感谢您的帮助。如果您的目标是制作矩阵列表,我建议您使用
list
。将它们放在真正的列表中,而不是像命名类似的对象那样放在主环境中,可以创建更多的内聚性,并使代码更易于理解
matrix_list = lapply(1:3, function(x) matrix(NA, nrow = 4, ncol = 6))
names(matrix_list) = paste('matrix', 1:3)
您看到的错误可能是因为assign
需要字符作为输入。仔细阅读assign
和get
的文档(不要再使用它们)。谢谢。实际上,我的代码for(1:3中的i){assign(paste0(“matrix”,i),matrix(NA,nrow=4,ncol=6))
可以像代码一样生成3个矩阵。我的问题是,有没有办法在每个循环中用变量名分配列值。再次感谢。另外,我阅读了assign
的文档,我的代码assign(get(paste0(“matrix”,I))[,1],rep(I,4))
应该是错误的。非常感谢。