生成多个列表以保存for循环中的数据

时间:2014-05-09 16:34:24

标签: r list for-loop

我已经得分并且为列表中存储的每个棒球队运行允许的数据;这里有3个团队的数据:

> str(d)
List of 3
 $ : num [1:32, 1:2] 2 2 3 4 6 3 2 14 5 0 ...
  ..- attr(*, "dimnames")=List of 2
  .. ..$ : NULL
  .. ..$ : chr [1:2] "R" "RA"
  ..- attr(*, "na.action")=Class 'omit'  num [1:134] 33 34 35 36 37 38 39 40 41 42 ...
 $ : num [1:33, 1:2] 0 3 3 2 0 8 6 7 4 6 ...
  ..- attr(*, "dimnames")=List of 2
  .. ..$ : NULL
  .. ..$ : chr [1:2] "R" "RA"
  ..- attr(*, "na.action")=Class 'omit'  num [1:133] 34 35 36 37 38 39 40 41 42 43 ...
 $ : num [1:35, 1:2] 1 0 7 2 6 1 5 7 0 3 ...
  ..- attr(*, "dimnames")=List of 2
  .. ..$ : NULL
  .. ..$ : chr [1:2] "R" "RA"
  ..- attr(*, "na.action")=Class 'omit'  num [1:131] 36 37 38 39 40 41 42 43 44 45 ...

我正在进行模拟,我会对每支球队的得分进行抽样,并将其与允许的比赛进行比较。然后我将结果存储在列表中。这是for循环:

z <- list()
for(i in 1:length(d)){
  s <- sample(d[[i]][, 1], length(d[[i]][, 1]), replace = TRUE)
  while(any(ind <- s == d[[i]][, 2])) 
    s[ind] <- sample(d[[i]][, 1], sum(ind), replace = TRUE)
  wins <- sum(s > d[[i]][, 2])
  losses <- length(d[[i]][, 1]) - wins
  win_perc <- wins/length(d[[i]][, 1])

  z[[i]] <- c(wins, losses, win_perc)
}

我想知道如何运行for循环数千次并将数据返回到每个团队的一个列表中。例如,当我在Cubs&#39;上运行模拟时数据我想这样做1000次,并将所有这些结果返回到一个列表。然后我想继续前进到下一个团队并做同样的事情。所以最后有30个团队列表,每个列表有1000行。这是列表的样子:

> z
[[1]]
[1] 16.0 16.0  0.5

[[2]]
[1] 13.0000000 20.0000000  0.3939394

[[3]]
[1] 21.0 14.0  0.6

我是否需要使用复制功能?

0 个答案:

没有答案