Rのrep():レプリケーション関数のデコード

公開: 2020-06-15

Rのrepについて話す前に、反復が何であるかを知る必要があります。 反復という用語は、繰り返しを意味します。 他のほとんどのプログラミング言語と同様に、従来のループまたは反復はRのコアな側面です。

通常のループはデータ管理への効率的なアプローチですが、反復がメモリと時間がかかるという唯一の理由から、コストがかかります。 良い代替案は、反復と同じ目標を達成できるベクトル化されたメソッドの使用です。 rep()関数は、そのようなベクトル化されたループ関数の1つのメンバーです。

目次

rep()関数とは何ですか?

簡単に言うと、Rのrep、またはrep()関数は、数値、テキスト、またはベクトルの値を特定の回数複製します。 rep()関数は、R基本パッケージのapply()関数ファミリーのメンバーです。 apply()ファミリには、配列、行列、データフレーム、およびリストからのデータを繰り返し操作するために使用される関数が含まれています。

apply()関数は、ループ構造の使用を回避して、配列、行列、または入力リストに作用し、オプションの引数を使用して名前付き関数を適用します。 呼び出される関数は、集約関数、変換関数、または配列、ベクトル、リスト、行列などのベクトル化された関数である可能性があります。 関数の詳細については、データサイエンスコースをご覧ください。

続きを読む:Pythonのデータフレーム:Pythonの詳細なチュートリアル

ベクトル化された計算と反復

シーケンスの個々の要素を操作する代わりに、ベクトル化されたメソッドはすべてのベクトルコンポーネントを同時に処理します。 したがって、ベクトル化された計算は常により高速な結果をフェッチします。

ベクトル化された計算の速度を説明するために、大きなベクトルを生成するためのfor()ループの経過時間を決定する例を使用します。 この例では、各要素は1からN(N = 10,000,000)までの増分累積合計として順次計算されます。 速度テストを通じて、for()ループの反復とベクトル化された関数の比較が行われます。

ソース

速度テストの結果を比較すると、ベクトル化された計算(速度テスト2)の経過時間がfor()ループよりも大幅に速いことは明らかです。 反復ループの1パスにかかる時間で、ベクトル化された計算を278回繰り返すことができます。

繰り返し対複製機能

RのRepeat関数またはループは、特定の条件が満たされるまで同じコードブロックを繰り返し実行する場合に使用されます。 これは、ブレークするまでコマンドブロックを繰り返し実行するforループとwhileループに非常によく似ています。 繰り返しループを作成するための基本的な構文は次のとおりです。

繰り返す {

if(条件){

壊す

}

}

次の例は、Repeat関数の使用法を明確にします。

上記の例では、繰り返しループは6に達するまで値を合計します。ループが6に達すると、「繰り返しループの終了」を出力してループを中断します。

一方、Rのレプリケート関数またはrepは、値のレプリケートに使用されます。 rep()関数を使用するための基本的なR構文は次のとおりです。

  1. rep(value、number_of_times)
  2. rep(sequence、each、number_of_times)

rep()関数を理解するためのいくつかの例を次に示します。

例:rep()関数を使用して、特定の回数の値を複製する

上記の例では、値2が10回複製されます。

例:length属性でrep()関数を使用する

上記の例では、要素数が20に達するまで、1から4が順番に印刷されます。

例:rep()関数を使用してリストを複製する

上記の例では、1から5の評価リストが3回複製されています。

ソース

rep()関数を使用してベクトルを展開する

rep()関数は、ベクトルを繰り返す柔軟な方法です。 その他の例を次に示します。

実験/観測単位の統計ベクトルを、単位の繰り返し観測を伴うデータフレームのベクトルに拡張する必要がある場合、各引数は非常に便利です。 例:

rep()のもう1つの機能は、長さの引数を、ベクトル内の各要素が繰り返される回数を指定するベクトルに置き換えることで、ベクトルを不均衡なパネルに拡張できることです。 例:

rep関数のより単純で高速なバージョンには、rep_len()とrep.int()が含まれます。 これらの新しいバージョンには、rep()の属性の一部が含まれていませんが、速度が重要であり、繰り返されるベクトルの余分な側面が望ましくない場合に役立ちます。

ソース

読む:初心者のための6つの興味深いRプロジェクトのアイデア

結論

この記事では、適切な例を使用して、Repeat関数とReplicate関数について説明しました。 従来の反復はコードのブロックを繰り返し実行するのに役立ちますが、Rのrepは、ベクトルまたはリストの値を複製するのに理想的です。 効率的で時間の節約になるrep()関数により、ベクトルの複製が簡素化されました。

R、データサイエンスについて知りたい場合は、IIIT-BとupGradのデータサイエンスのエグゼクティブPGプログラムをご覧ください。これは、働く専門家向けに作成され、10以上のケーススタディとプロジェクト、実践的なハンズオンワークショップ、業界の専門家とのメンターシップを提供します。 、業界のメンターと1対1で、400時間以上の学習とトップ企業との仕事の支援。

Rで値が繰り返されるベクトルを作成するにはどうすればよいですか?

Rのrep()関数は、一連の整数を繰り返すために使用できます。 Rには、値が繰り返されるベクトルを作成するための2つの手法があります。 最初の方法はベクトル内の各要素を繰り返し、2番目の方法は指定された回数だけ要素を繰り返します。 ベクトルは、これらの各アプローチでrep関数を使用して作成されます。 たとえば、rep(1:5、times = 5)は、シーケンス1〜5が5回繰り返されるベクトルを生成します。

どちらの関数が高速ですか-複製またはForループ?

Rプログラミング言語では、Forループ関数はレプリケート関数よりも高速です。 forループは、リスト内の値ごとにコードを実行することにより、さまざまなプログラミング言語の値のリストをループする手法です。 rep()は、メモリを無駄にすることなく実行することを唯一の目的とするベクトル化されたループ関数です。 既存のデータフレームの一部を変更する必要がある場合は、通常、Forループが最適なオプションです。

どうすればRコードを高速化できますか?

Rコードを高速化するためのいくつかの方法を以下に示します。

1.データ構造と出力変数を計算用のループに入れる前に、それらが正しい長さとデータ型であることを確認してください。 ループ内では、データ量を徐々に拡大しないようにしてください。
2.データフレームは多くの状況で問題を引き起こす可能性があるため、可能であれば、データフレームの代わりにマトリックスを使用してください。 結果として、絶対に必要な場合にのみデータフレームを使用してください。
3.可能であれば、ベクトルおよび行列演算を使用します。
4. Rでは、オブジェクトのタイプやサイズを変更しないでください。 Rオブジェクトのタイプとサイズを変更すると、メモリスペースが再割り当てされますが、これはデフォルトでは不十分です。