R言語

R言語 rbindやcbindを使いやすくしてみた【自作関数】

  1. HOME >
  2. R言語 >

R言語 rbindやcbindを使いやすくしてみた【自作関数】

スポンサーリンク

こんにちは、usagi-sanです。

今回は自作関数の紹介をします。

ベクトルやデータフレームを簡単に縦、横方向に結合できる関数を作ってみました。

R言語でベクトルやデータフレームを結合させる際、データフレームのnamesが異なるときはerrorが出てしまいrbindが使えないなどの問題があります。

rbindやcbindを用いたことがある方は一度は、colnamesを合わせたり行数列数を合わせたりするなどしたことがあると思います。

今回紹介する関数は、namesや行数列数の調整を自動的に行ってくれます。

いちいち、colnamesやデータフレームの形を変更することなく、ベクトルやデータフレームの結合ができます。

関数の紹介

mergeRowAndColnamesWithData

関数mergeRowAndColnamesWithDataは、データフレームの行名と列名をデータフレームの要素に結合させる関数です。

ポイント

例えば、write.tableの引数にrow.names = FALSEやcol.names = FALSEを指定する場合、データフレームの行名と列名が出力に反映されなくなり、不都合が生じる場合があります。この関数を用いることで、rbindやcbindなどのデータフレームを結合させる関数を使うことなく、瞬時に行名と列名をデータフレームの要素に組み込むことができます。

mergeRowAndColnamesWithDataの引数を以下に示します。

関数mergeRowAndColnamesWithDataの引数
xデータフレーム型のオブジェクト

rowBind

関数rowBindは2つの(ベクトル型かデータフレーム型)のオブジェクトを縦方向に結合させる関数です。

ポイント

rbindとの違いは、列名や列数を調整する必要がない点です。2つのデータフレームの列名が一致していない場合や列数が異なる場合、rbindを用いることができません。しかし、この関数を用いることで、列名や列数を調整することなく結合させることができます。

rowBindの引数を以下に示します。

関数rowBindの引数
x結合させたいベクトル型またはデータフレーム型のオブジェクト
yxに結合させるベクトル型またはデータフレーム型のオブジェクト
rowNames行名を含めるか含めないか
colNames列名を含めるか含めないか
sep2つのデータフレームxとyを空白行で区切って結合させるか、させないか。sep = TRUEの場合2つのデータフレームの間に空白行が挿入される。

colBind

関数colBindは2つの(ベクトル型かデータフレーム型)のオブジェクトを横方向に結合させる関数です。

ポイント

cbindとの違いは、行数を調整する必要がない点です。2つのデータフレームの行数が異なる場合、cbindを用いることができません。しかし、この関数を用いることで、行数を調整することなく結合させることができます。

colBindの引数を以下に示します。

関数colBindの引数
x結合させたいベクトル型またはデータフレーム型のオブジェクト
yxに結合させるベクトル型またはデータフレーム型のオブジェクト
rowNames行名を含めるか含めないか
colNames列名を含めるか含めないか
sep2つのデータフレームxとyを空白列で区切って結合させるか、させないか。sep = TRUEの場合2つのデータフレームの間に空白列が挿入される。

関数の使いかた

mergeRowAndColnamesWithData

関数mergeRowAndColnamesWithDataの使用例を紹介します。

データセットmtcarsにこの関数を適用してみます。

実行すると、次のようにデータフレームの1行目にはc("", "mpg", "cyl", "disp", "hp", "drat", "wt", "qsec", "vs", "am", "gear", "carb")、1列目にはc("", "Mazda RX4", "Mazda RX4 Wag", "Datsun 710", "Hornet 4 Drive", "Hornet Sportabout")となっているように、データフレームの1行目と1列目にそれぞれ行名と列名が組み込まれています。

関数rownamesやcolnamesを使うと、行名はc("1", "2", . . . , )、列名はc("", "", . . . , "")になっているのが分かります。

rowBind

関数rowBindの使いかたを紹介していきます。

rowBindは2つのデータフレームまたはベクトルを縦方向に結合させるときに便利です。

次を実行することで、mtcarsirisを縦に結合できます。