所以,我在R中编程很新,所以我甚至不知道这是否可行。我有50个矩阵(50,000行乘10列)我试图填充蒙特卡罗模拟。我在一个循环中创建了所有矩阵,并且它们被称为Item
,mCMatrix1
等。
我想在一个循环中填充矩阵,这是有效的:
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以来已经有一段时间了,所以语法可能不对,但是这就是这种效果。
答案 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