ore.frame
オブジェクトは、Oracle Databaseインスタンスに対するリレーショナル問合せを表します。これはdata.frame
に相当するOracle R Enterpriseのオブジェクトです。通常は、データベース表のプロキシであるore.frame
オブジェクトを取得します。次に、ore.frame
プロキシ・オブジェクトに新しい列を追加するか、他の変更を行います。そのような変更は、基礎となる表には影響しません。その後でore.frame
オブジェクトのソース表からデータをリクエストした場合は、透過層関数が選択リストに追加の列があるSQL問合せを生成しますが、その表は変更されません。
Rでは、data.frame
の要素に明示的な順序付けがあります。整数索引付けを使用して要素を指定できます。一方、リレーショナル・データベース表では行の順序が定義されないため、Rデータ構造に直接マップできません。
Oracle R Enterpriseには、ore.frame
オブジェクトの順序付けられたものと順序付けられていないものの両方があります。表に主キー(行内で個別のタプルを形成する1つ以上の列のセット)がある場合は、SELECT
文でORDER BY
句を使用することで順序付けられた結果を生成できます。ただし、リレーショナル・データの順序付けは負荷が高く、多くの場合、透過層操作では不要です。たとえば、ore.frame
でsummary
関数を呼び出す場合、サマリー統計の計算に順序付けは必要ありません。
例1-4 data.frameおよび対応するore.frameのクラス
この例では、様々なデータ型を含む列があるdata.frame
を作成し、data.frame
の構造を表示します。この例では次に、ore.push
関数を呼び出して、data.frame
のデータのコピーを含むデータベースに一時表を作成します。ore.push
の呼出しでは、その表のプロキシであるore.frame
オブジェクトも生成されます。この例では、ore.frame
オブジェクトとdata.frame
オブジェクトおよびore.frame
オブジェクトにある列のクラスを表示します。
df <- data.frame(a="abc", b=1.456, c=TRUE, d=as.integer(1), e=Sys.Date(), f=as.difftime(c("0:3:20", "11:23:15"))) ore.push(df) class(of) class(df$a class(of$a) class(df$b) class(of$b) class(df$c) class(of$c) class(df$d) class(of$d) class(df$e) class(of$e) class(df$f) class(of$f)例1-4のリスト
R> df <- data.frame(a="abc", + b=1.456, + c=TRUE, + d=as.integer(1), + e=Sys.Date(), + f=as.difftime(c("0:3:20", "11:23:15"))) R> ore.push(df) R> class(of) [1] "ore.frame" attr(,"package") [1] "OREbase" R> class(df$a) [1] "factor" R> class(of$a) [1] "ore.factor" attr(,"package") [1] "OREbase" R> class(df$b) [1] "numeric" R> class(of$b) [1] "ore.numeric" attr(,"package") [1] "OREbase" R> class(df$c) [1] "logical" R> class(of$c) [1] "ore.logical" attr(,"package") [1] "OREbase" R> class(df$d) [1] "integer" R> class(of$d) [1] "ore.integer" attr(,"package") [1] "OREbase" R> class(df$e) [1] "Date" R> class(of$e) [1] "ore.date" attr(,"package") [1] "OREbase" R> class(df$f) [1] "difftime" R> class(of$f) [1] "ore.difftime" attr(,"package") [1] "OREbase"