在R中的for循环期间分配和使用变量
我有一个数据集,包含大约4000个向量形式的矩阵,每个矩阵都应该按创建日期命名 现在我有以下几点:在R中的for循环期间分配和使用变量,r,for-loop,R,For Loop,我有一个数据集,包含大约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]
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
}
}
}
不起作用,因为我以后必须在下一个for循环中重用变量名
我怎样才能解决这个问题?还是有更有效的方法将我的值分配给矩阵
多谢各位 也许最简单的方法是在循环结束时使用
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)
}
for(k个输入日期){
这可能最简单的方法是在循环结束时使用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)
}
for(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
}
}
}