3.2.3.4.1 ore.frameオブジェクトの順序付けについて

vectordata.frameなどのRオブジェクトには、その要素の暗黙的な順序付けがあります。

Oracle Database表のデータは、必ずしも順序付けられている必要はありません。一部のR操作では順序付けは役立ちますが、他の操作では必要ではありません。ore.frameを順序付けすることで、整数または文字列索引のいずれかを使用してore.frameオブジェクトに索引付けできます。

SQL問合せに対するプロキシである順序付けられたore.frameオブジェクトを使用すると、大規模なデータセットでは時間がかかります。そのため、OML4Rはデフォルトで順序付けられたore.frameオブジェクトの作成を試みますが、順序付けられていないore.frameオブジェクトを作成するための方法も提供されています。

ore.sync関数を呼び出して、SQL問合せのプロキシとしてOML4Rore.frameオブジェクトを作成する場合、use.keys引数を使用してore.frameを順序付けするか、しないようにするかを指定できます。

次の1つ以上の条件を満たす場合、ore.frameオブジェクトは順序付けられます。

  • ore.sync関数のuse.keys引数の値がTRUEで、基礎となる表で主キーが定義されている

  • ore.frameの行名が一意のタプルを構成する

  • ore.frameオブジェクトがaggregatecbindなどの特定の関数で生成されている

  • 関連するOML4Rの関数に対する入力引数であるore.frameオブジェクトのすべてが順序付けられている

次の1つ以上の条件を満たす場合、ore.frameオブジェクトは順序付けられません。

  • ore.sync関数のuse.keys引数の値がFALSEである

  • 主キーが基礎となる表に定義されておらず、ore.frameオブジェクトの行名が指定されていないか、ore.frameオブジェクトの行名がNULLに設定されている

  • 関連するOML4Rの関数に対する入力引数である1つ以上のore.frameオブジェクトが順序付けられていない

順序付けられていないore.frameオブジェクトにはNULLの行名があります。例3-15の最後の行に示すように、オブジェクトの行名でis.nullを呼び出すことによってore.frameオブジェクトが順序付けられるかどうかを判断できます。ore.frameオブジェクトが順序付けられていない場合、is.nullはエラーを返します。

関連項目:

データの索引付け