R 为循环中矩阵的一列赋值

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”循环生成具有顺序名称的矩阵列表,然后给出其中一列的值

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))
应该是错误的。非常感谢。