在R中的for循环期间分配和使用变量

在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]

我有一个数据集,包含大约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
    }
  }
}
不起作用,因为我以后必须在下一个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
    }
  }
}