futabooo blog

色々手をつけすぎてすぐに忘れるので備忘録

Rで他言語みたいに変数名を変えながらfor文とかでつまったこと

まず、変数名を変えながら、更にその変数に値を代入するのにはassign関数とpaste関数をう。

例えば普通に変数に代入するのをassign関数を使うとこうなる。

a <- 10
assign(a, 10)

paste関数とは文字列の結合をする関数、例えば

x <- paste("Hello","World", sep="")
x
"HelloWorld"

ここでsep=""は結合する文字列間をどうするかを指定できる。
上の場合は何も入れない。でもしたのように半角スペースいれると。

x <- paste("Hello","World", sep=" ")
x
"Hello World"

こうなる。

この2つの方法を融合させることで変数名を変えながら値を代入していくことができる。

for( i in 1:10){
    assign(paste("x", i, sep=""), i)
}

こんなふうにやると結果はこうなります。

>x1
1
>x2
2
>x3
3
>x4
4
>x5
5
>x6
6
>x7
7
>x8
8
>x9
9
>x10
10

(ここで > の記号はRのコンソール画面で入力を表す記号です。)

ここでやっとタイトルのつまっとところに来るわけですが、
この変数を順番に使いながら同じ処理を繰り返そうとしてつまりました。
例えば、ファイルへの出力をするとして

for( i in 1:10){
    write(paste("x", i, sep=""), "hoge.csv")
}

これだとエラー。
でもこうすると、

for( i in 1:10 ){
    write(get(paste("x", i, sep="")), "hoge.csv")
}

大丈夫!!

Rwikiをあさっていて発見しました。