R の事前割り当てについて混乱しています。事前割り当てがはるかに高速になり、オーバーメモリの問題を解決できることは誰もが知っています。しかし、長さが不明なリストを取得したい場合は、もっと長い長さを割り当てる必要がありますか? または、「適切な」長さを割り当てることができ、リストの最終的な長さが割り当てられた長さを超えている場合は、拡張された要素をリストに追加できます。たとえば、最終的なリストの長さが 20000 であると仮定します。
最初の方法は次のとおりです。
# the length of A should be unknown, I just set it as 20000 here for convenience
A <- rep(1:10, each=2000)
x <- vector(mode = "list", length = 50000)
for (i in 1:length(x)) {x[i] <- A[i]}
x <- x[!is.na(x)]
#or
x <- na.omit(x)
2番目の方法は次のとおりです。
A <- rep(1:10, each=2000)
x <- vector(mode = "list", length = 10000)
for (i in 1:length(A)) {
if (i<=length(x)) {
x[i] <- A[i]
}
else {
x <- c(x, A[i])
}
}
どちらが良いでしょうか?または、より良いアイデアがあれば教えてください。ありがとう。