我这里有一个函数,generate.board(n, p)
生成一个n行和n列的矩阵(参数p
在这里并不重要。)
我还创建了一个空列表trials
来存储我的输出。
我想做什么:
我希望generate.board
以n
从[{1}}到10
的每个值迭代运行100
10次,间隔为10
。此外,对于generate.board
的每次运行,我想记录经过的时间。
我想帮助将矩阵和经过的时间存储在试验中。我会告诉你我在这里有什么,这会引发一个错误:
subscript out of bounds
我的代码:
trials <- list()
for (ii in seq(10, 100, by= 10)) {
for (jj in seq(10)) {
trials[[ii]][jj] <- generate.board(n = ii, p = 0.4)
trials[ii / 10][jj + 1] <- system.time(generate.board(n = ii, p = 0.4))[3]
}
}
答案 0 :(得分:0)
如果不进行进一步修改,我们只需使用paste
来命名我们的列表条目。发生错误是因为没有要为其分配第一个矩阵的列表项#10。
trials <- list()
for (ii in seq(10, 100, by= 10)) {
for (jj in seq(10)) {
trials[[paste(ii)]][jj] <- generate.board(n = ii, p = 0.4)
attributes(trials[[paste(ii)]][jj]) <- list("Time" = system.time(generate.board(n = ii, p = 0.4))[3])
}
}
根据您的需要,有更简单的方法。对于初学者,您可以使用system.time(rials[[paste(ii)]][jj] <- generate.board())
。你也可以用嵌套的lapply
来做。那么你不必自己管理索引。还要检查函数microbenchmark::microbenchmark
。