Railway gun

Web系企業に勤めるサラリーマンが書くブログ

文字列の合成と評価させる方法

R言語に限らず、ループカウンタ等の変数を使って文字列を作りたい事がある。
Rでのやり方は簡単。paste関数を使うだけ。

i=1
paste("hoge",i,"hoge")  #-> "hoge 1 hoge"

単純に繋ぎたいオブジェクトを「,」区切りで渡せば良い。
デフォルトだと、スペースが区切り文字として入ってしまうため、

i=1
paste("hoge",i,"hoge",sep="")  #-> "hoge1hoge"

このようにsepプションで区切り文字を無しに指定すると、そのままつながる。

ちなみに、paste関数で生成された文字列は単なる文字列として扱われるため、
例えば既存のオブジェクトと同じ名前を作ったとしても評価されない。

オブジェクトとして評価させたい場合は,eval(parse(text=...))を使う。

tmp = "success"
eval(parse(text=paste("t","m","p",sep=""))) #-> "success"

これでオブジェクトとして認識されます。