Rでは、ループ内でデータ構造を拡張することは非効率的です。特定のサイズのlist
を事前に割り当てるにはどうすればよいですか? matrix
は、ncol
およびnrow
引数を使用してこれを簡単にします。リストでこれをどのように行うのですか?例えば:
x <- list()
for (i in 1:10) {
x[[i]] <- i
}
これは非効率だと思います。これを行うためのより良い方法は何ですか?
vector
は、目的のモードと長さの空のベクトルを作成できます。
x <- vector(mode = "list", length = 10)
@Jilberが言ったことを拡張するために、lapply
はこの種の操作のために特別に構築されています。
forループの代わりに、次を使用できます。
x <- lapply(1:10, function(i) i)
これをより複雑な例に拡張できます。多くの場合、forループの本体にあるものは、ループの各反復からの行のように見える単一の行を受け入れる関数に直接変換できます。
このようなもの:
x <- vector('list', 10)
しかし、lapplyを使用することが最良の選択です