我有一个向量,该向量的值要包含在矩阵的第一行中,该值将填充到下两个for循环中,因此它将是三个for循环。我已经尝试过cat
和paste
,但没有成功。
所以我的问题是要插入名称为矩阵v1
的{{1}}值,其名称应为cart_1(当v1为1时)
cart_
答案 0 :(得分:1)
一个好的做法是使用一个命名列表:
cart <- list()
for (v1 in 1:5){
cart[[paste0("cart_", v1)]] <- matrix(0,3,3)
}
您可以使用:
访问cart_1cart[["cart_1"]]
向cart_n创建n个对象cart_1不是一个好习惯。一个包含您n个对象的对象更好。如果您有2个连续的不同大小的循环,则可能会保留不需要的对象。
答案 1 :(得分:0)
这实际上是R常见问题解答(https://cran.r-project.org/doc/FAQ/R-FAQ.html#How-can-I-turn-a-string-into-a-variable_003f
中的问题7.21该答案最重要的部分是结尾处,它指出使用列表通常更容易。 @Clemsang给出了在for循环中使用列表的示例。
使用列表而不是全局变量,可以减少意外覆盖另一个变量的可能性,并更轻松地处理结果。如果您想对每个新矩阵进行处理,则可以在类似于它们创建方式的循环中引用它们,而不必担心get
(或使用lapply
或{{ 1}}使其变得更容易),以及是否要复制/保存/删除/等。所有矩阵,您只需使用一个对象即可,而无需再次循环。
在上面的示例中,循环的主要结果是进行了几次分配。在这种情况下,使用sapply
或相关函数代替显式循环通常会更容易,更好。例如:
lapply