我有一个数据集,包含大约4000个矢量形式的矩阵,每个矩阵都应该按照它创建的日期命名。
现在我有以下内容:
dates <- unique(rcov_matrix$dateid)
for(k in dates){
k <- matrix(0, 30, 30)
for(i in 1:30){
for (j in 1:i){
number <- number + 1
value <- rcov_matrix[1, number]
k[i,j] <- value
k[j,i] <- value
}
}
}
代码正确地将向量的条目分配给矩阵,但我最终只得到一个名为k的矩阵。 我知道这是因为在R中分配变量名称的方式,但我找不到类似帖子中我的问题的可行解决方案。
assign(k, matrix(0, 30, 30))
不起作用,因为我必须在下一个for循环中重用变量名。
我该如何解决这个问题?或者是否有更有效的方法将我的值分配给矩阵?
谢谢。
答案 0 :(得分:0)
也许最简单的方法是在循环结束时使用assign
,而不是在开头。
for (k in dates){
This_k <- matrix(0, 30, 30)
for(i in 1:30){
for (j in 1:i){
value <- rnorm(1) # I use rnorm here to make the example reproducible
This_k[i,j] <- value
This_k[j,i] <- value
}
}
assign(k, This_k)
}
或者(可能更高效),您可以将矩阵放在列表中并使用列表索引:
klist = lapply(rep(0, length(dates)), matrix, 30, 30)
names(klist) = dates
for (k in dates){
for(i in 1:30){
for (j in 1:i){
value <- rnorm(1)
klist[[k]][i,j] <- value
klist[[k]][j,i] <- value
}
}
}