3

私はループが初めてで、i 番目のデータ フレームからの変数の呼び出しに問題があります。

各データ フレームを正しく呼び出すことはできますが、各データ フレーム内で指定された変数を呼び出す必要がある場合、次のような問題が発生します。

例:

for (i in 1:15) {
    assign(
      paste("model", i, sep = ""), 
    (lm(response ~ variable, data = eval(parse(text = paste("data", i, sep = "")))))
    )
    plot(data[i]$response, predict.lm(eval(parse(text = paste("model", i, sep = ""))))) #plot obs vs preds
}

ここでは、単純な 1 変数の線形モデルを 15 回実行していますが、これは問題なく機能します。結果をプロットしようとすると問題が発生します。data[i]応答を呼び出すにはどうすればよいですか?

4

2 に答える 2

3

名前が data1 ...data15 の複数のデータフレームがあり、文字 d、a、t、a で始まるデータオブジェクトが他にないとします。また、これらのデータフレームのそれぞれに、「応答」および「変数」という名前の列があると仮定しましょう。これにより、データフレームがリストに収集され、線形回帰線の個別のプロットが描画されます。

dlist <- lapply ( ls(patt='^data'), get)
lapply(dlist, function(df) 
                 plot(NA, xlim=range(df$variable), ylim=range(df$response)
                 abline( coef( lm(response ~ variable, data=df) ) )
         )

そのリスト内のデータフレームに名前を付けたい場合は、貼り付けコードを使用して名前を指定できます。

names(dlist) <- paste("data", i, sep = "")

このループのコンテキストで行うことができる他の多くの割り当てがありますが、失敗した努力よりも望ましい結果をより適切に説明する必要があります。

于 2013-07-28T19:59:32.137 に答える