さて、次のように空の/無意味なオブジェクトの配列を作成できます:lm
z <- NA
class(z) <- "lm"
lm_array <- replicate(20,z,simplify=FALSE)
しかし、それはおそらく問題を解決する最良の方法ではありません。適切な長さの空のリスト ( ) を作成し、それに沿って要素を埋めることができます。R は型付けが弱いため、値をオブジェクトvector("list",20)
に置き換えてもかまいません。ただし、より慣用的には、予測子名のリストで実行できます。NULL
lm
lapply
my_data <- data.frame(result=rnorm(10), v1=rnorm(10), v2=rnorm(10))
prednames <- setdiff(names(my_data),"result") ## extract predictor names
lapply(prednames,
function(n) lm(reformulate(n,response="result"),
data=my_data))
または、無名関数を作成したくない場合は、最初に数式のリストを生成し ( を使用lapply
)、lm
それらに対して実行できます。
formList <- lapply(prednames,reformulate,response="result") ## create formulae
lapply(formList,lm,data=my_data) ## run lm() on each formula in turn
lm
上記の最初の戦略と同じオブジェクトのリストを作成します。
my_data$result
一般に、モデリング式内などの構文を使用しないことをお勧めします。data
代わりに、モデル内のすべての変数がオブジェクト内から描画されるように設定してみてください。そうすれば、メソッドが好きpredict
になり、update
正しく機能する可能性が高くなります...