R言語

【R言語】ベクトルの操作 作成・値の代入・要素の追加など

  1. HOME >
  2. R言語 >

【R言語】ベクトルの操作 作成・値の代入・要素の追加など

スポンサーリンク

統計学初学者向けの教材です
¥2,970 (2022/06/01 17:41時点 | Amazon調べ)

 ベクトルの要素の追加・削除

次に、ベクトルの要素の追加と削除の仕方について見ていきます。

インデックスと名前、真偽値で追加と削除する例を紹介します。

インデックスで指定

まずインデックスで要素を追加・削除する方法について見ています。

例えば、20番目にある要素を追加したい、または削除したい場合によく用います。

インデックスで追加・削除する方法は以下の通りです。

  • 11番目に11を追加したいときは、vec[11] <- 11
  • ベクトルの末尾に12を追加したいときは、vec[length(vec) + 1] <- 12
  • 11番目の要素を削除したいときは、vec <- vec[-11]

ベクトルの大括弧に追加したい位置を表すインデックスを渡し、そこに追加する要素を代入します。

また、マイナスのインデックスを渡すと、その位置の要素を削除することができます。

また、関数appendを使うことで指定したインデックス以降に要素またはベクトルを追加することが可能です。

名前で指定

追加または削除する要素の名前を指定する方法を紹介します。

次のように追加する要素の名前の指定や、名前に対応する要素を削除することができます。

  • 名前が"K"である要素11を追加したいときは、vec["K"] <- 11
  • 名前が"K"である要素を削除したいときは、vec <- subset(vec, subset = !(names(vec) %in% c("K")))

真偽値で指定

最後に真偽値で指定して削除する方法を紹介します。

こちらは削除のみの解説となります。真偽値で指定して特定の要素のみを削除する例を紹介します。

ベクトルの特定の要素を削除したいときは次のように実行します。

削除したい要素以外がTRUEとなるような真偽値のベクトルを渡すことで削除することが可能です。

  • 11の要素を削除したいときは、vec <- vec[vec != 11]
  • 12以上の要素を削除したいときは、vec <- vec[vec < 12]

ベクトルの結合

ベクトルの結合について見ていきます。

2つ以上のベクトルを結合したいときは、次のように関数cの引数に結合したいベクトルを渡します。

また、関数appendを使っても同様に結合することが可能です。

ベクトルの並び替え・ソート

ベクトルの並び替え及びソートの仕方について紹介します。

要素の取得と同様に、インデックスと名前でベクトルの要素を並び替える方法を解説します。

インデックスで指定

まずインデックスでベクトルの要素を並び替えを行っていきます。

並び替え後の要素に対応するようにインデックスのベクトルを大括弧に渡すことで、ベクトルの要素を入れ替えることができます。

  • 1番目を末尾に移動したいときは、vec <- vec[c(setdiff(seq_len(length(vec)), 1), 1)]
  • 1から9番目を後ろに移動したいときは、vec <- vec[c(setdiff(seq_len(length(vec)), seq(1, 9)), seq(1, 9))]

また、ベクトルをソートしたいときは次のように関数orderを使います。

関数orderによりベクトルの順位を得ることができるので、その順位を大括弧に入れることでベクトルをソートすることができます。

降順にしたいときは、引数decreasingをTRUEにします。

ベクトルの要素を逆順にしたいときは、関数revを使います。

名前で指定

ベクトルに名前がある場合は名前で要素を並び替えることができます。

インデックスのときと同様に、並び替え後の要素に対応するように名前のベクトルを大括弧に渡すことで、並び替えができます。

  • 名前"A"の要素を末尾に移動したいときは、vec <- vec[c(setdiff(names(vec), "A"), "A")] 

欠測値の処理

次に、欠測値の処理の方法について見ていきます。

ベクトルに含まれる欠測値を除去したいときは関数na.omitを使います。

ベクトルの型(type)の変更

ベクトルの型(type)の変更について見ていきます。

Rにはnumeric型、character型logical型factor型などの様々な方があります。

関数as.numericas.characteras.logicalas.factorでそれぞれnumeric型、character型、logical型、factor型への変更ができます。

実行例をいかにまとめました。

ベクトルの演算

ベクトルの演算について見ていきます。

numeric型のベクトルに関して次の表の演算を行うことができます。

和、差、積、商、べき乗、整数商、剰余、内積、テンソル積を計算することができます。

ベクトルの演算と演算子
演算子演算
+
-
*
/
^べき乗
%/%整数商
%%剰余
%*%内積
%o%テンソル積

実行例は以下の通りです。

集合演算

ベクトルの集合演算に関する関数を紹介します。

次の表の関数を用いることで、ベクトルの和集合、差集合、積集合を計算することができます。

また、集合として等しいかどうか、集合の要素であるかどうかも計算することもできます。

集合演算に関する関数
関数演算
union和集合
setdiff差集合
intersect積集合
setequal同じ集合かどうか
is.element集合の要素であるかどうか

実行例は以下の通りです。

 合計・平均・分散

ベクトルの合計・平均・分散を求める関数を紹介します。

次に示すように、関数summeanvarを用いることで、簡単にデータの要約を行うことができます。

度数表の作成

ベクトルの要素の数を計算する関数と実行例について見ていきます。

関数tableによりベクトルの度数を計算することができます。

ベクトルのファイルへの保存

最後にベクトルをtxtファイルやcsvファイルに保存する例を紹介します。

関数write.tablewrite.csvでtxtファイルやcsvファイルにベクトルのデータを出力することができます。

ベクトルをそのまま関数に渡すと下の画像のように縦方向に要素が出力されます。

要素を横に並べて出力したいときは、関数tを使ってベクトルを転置しましょう。

ベクトルのtxtファイルへの保存(縦)

ベクトルのtxtファイルへの保存(横)

ベクトルのcsvファイルへの保存(縦)

ベクトルのcsvファイルへの保存(横)

まとめ

R言語のベクトルの操作方法について見ていきました。

データフレームと同様に、インデックス名前真偽値による操作方法があります。

特に真偽値による要素の指定方法ができるようになると、ベクトル単位での演算が可能となるため、インデックスのときよりも実行時間が早くなることがあります。

インデックスでもc(1, 2, 4)のように複数を指定することができますが、特定の要素のみ変えたいときは、条件に合う要素をあらかじめ真偽値で表したほうが扱いやすいです。

スポンサーリンク

  • この記事を書いた人
  • 最新記事

usagi-san

統計学とゲームとかをメインに解説していくよ。 数式とかプログラミングコードにミスがあったり質問があったりする場合はコメントで受け付けます。すぐに対応します。

-R言語
-,