如何迭代/循环遍历R中的多个编号变量

时间:2015-08-18 03:42:51

标签: r loops variables for-loop matrix

所以,我在R中编程很新,所以我甚至不知道这是否可行。我有50个矩阵(50,000行乘10列)我试图填充蒙特卡罗模拟。我在一个循环中创建了所有矩阵,并且它们被称为ItemmCMatrix1等。

我想在一个循环中填充矩阵,这是有效的:

mCMatrix2

我可以以某种方式编写程序代码,知道它需要填充for (i in 50){ for (j in 50000){ num <- mu + tR %*% rnorm(10) # returns a 10 row, 1 column matrix mCMatrixC"i"[]= num[,1] # basically rotates the matrix to fill in the first row } } ,然后mCMatrix1,一直到第50个矩阵。对于STATA用户,我记得你可以使用v = forval(值范围)循环变量,mCMatrix`v&#39; 。 (自从我使用过STATA以来已经有一段时间了,所以语法可能不对,但是这就是这种效果。

3 个答案:

答案 0 :(得分:0)

R在列表和data.frames上运行,这与其他方法略有不同。最简单的方法是创建矩阵名称列表并遍历列表。

Rawr的方法是最简单的,也可能是最有效的方法。

然后你只需通过mlist [n]访问它,n就是你想要的矩阵。

如果你想要一个完整的数据框架方法,它稍微复杂一点,但它给出了一个带索引而不是矩阵列表的数据表

library(dplyr)
yourData <- data.frame()

for (k in 1:50) {
  yourData <- yourData %>% 
    rbind((as.data.frame(matrix(rnorm(50000 * 10), nrow=50000, ncol=10))) %>%    
    mutate(Run = k))
}

这样你可以将其作为

访问
yourData %>% filter(Run = n) 

答案 1 :(得分:0)

您可以使用以下内容构建矩阵列表,以便更轻松地访问和访问它。我不确定你在循环中做的矩阵运算,所以我选择了一个随机矩阵作为例子。

.instance_eval

答案 2 :(得分:0)

如果核心问题是生成新的(编号)变量名并为它们赋值,那么我认为你可以使用这种方法:

for(i in 1:3) 
{
n<- sprintf("matr%d",i)
print(n)
assign(x=n,value = i)
}
matr1
matr2
matr3