

Rを用いて，複数回繰り返した計算結果(データフレームから条件で抽出しているだけですが)を複数のオブジェクトに保存したいです．毎回条件の異なるリストを列で指定していますが，データフレームは複数行×複数列の構造を維持したいので，ループ1回ごとにオブジェクトの名前を変えて複数のオブジェクトを保存しようとしています．

そこで，以下のようにforを使って書いたのですが，

for(i , in １：length(selection1){  
Object = DataFrame[selection1[[i]], ]  
}

Objectの名前をループごとに変更する方法が分からず，困っています．

このようなfor文の中でオブジェクトの名前を逐次変更していきたい場合は，どのように指定すればいいのでしょうか？


CC BY-SA 3.0
2017-05-24T05:19:55.690
34975
2022-07-27T16:01:20.130
23335
question
r
Rで計算結果を保存した複数のオブジェクトを一度に生成したい


イマイチよく分かりませんが、

[code]

    set.seed(11)
    dat <- data.frame(label1 = rep(c("a", "b", "c"), each = 10),
                  label2 = rep(1:5,  6),
                  A = rnorm(30, 1, 3),
                  B = rnorm(30, 5,3))
    
[/code]

こんなデータを、

リストにする。

[code]

    dat1 <- NULL
    for(i in 1:5)  dat1[[i]] <- dat[dat$label2 == i, ]
    
[/code]

あるいは、バラバラにcsvで保存する。

[code]

    list_name <- paste(1:5, ".csv", sep ="")
    for(i in 1:5)  write.csv(dat[dat$label2 == i, ], list_name[i])
    
[/code]

という事ですかねぇ…


CC BY-SA 3.0
2017-05-24T07:04:59.293
34980
2017-05-24T07:04:59.293
23327
34975
answer


[user23327](https://ja.stackoverflow.com/a/34980/11184) さんの回答に加えて, `assign`
を使った次のような書き方もあります

[code]

    > results <- c("v", "w", "x", "y", "z")
    > for(i in 1:5)  assign(results[i], dat[dat$label2 == i, ])
    > v
    label1 label2          A          B
    1       a      1 -0.7730933 1.68714787
    6       a      1 -1.8024540 6.45403114
    11      b      1 -1.4852997 0.09045108
    16      b      1  1.0369809 3.96837696
    21      c      1 -1.0475529 7.36961172
    26      c      1  1.0214764 6.62787928
    > w
    label1 label2           A         B
    2       a      2  1.07978311  2.185549
    7       a      2  4.97081694  4.441842
    12      b      2 -0.04505518  5.061144
    17      b      2  0.33109138 -1.560344
    22      c      2  0.95242542  4.310018
    27      c      2  0.43719967  4.530065
    
[/code]


CC BY-SA 3.0
2017-06-01T05:44:01.523
35179
2017-06-01T05:44:01.523
11184
34975
answer