2.4.2.2 ore.frameクラスについて
これはdata.frameに相当するOML4Rのオブジェクトです。通常は、データベース表のプロキシであるore.frameオブジェクトを取得します。次に、ore.frameプロキシ・オブジェクトに新しい列を追加するか、他の変更を行います。そのような変更は、基礎となる表には影響しません。その後でore.frameオブジェクトのソース表からデータをリクエストした場合は、透過層関数が選択リストに追加の列があるSQL問合せを生成しますが、その表は変更されません。
Rでは、data.frameの要素に明示的な順序付けがあります。整数索引付けを使用して要素を指定できます。一方、リレーショナル・データベース表では行の順序が定義されないため、Rデータ構造に直接マップできません。
OML4Rには、ore.frameオブジェクトの順序付けられたものと順序付けられていないものの両方があります。表に主キー(行内で個別のタプルを形成する1つ以上の列のセット)がある場合は、SELECT文でORDER BY句を使用することで順序付けられた結果を生成できます。ただし、リレーショナル・データの順序付けは負荷が高く、多くの場合、透過層操作では不要です。たとえば、ore.frameでsummary関数を呼び出す場合、サマリー統計の計算に順序付けは必要ありません。
関連項目:
ore.createの詳細は、「一時データベース表の作成」を参照してください。
例2-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(df$a)
class(df$b)
class(df$c)
class(df$d)
class(df$e)
class(df$f)例のリスト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(df$a)
[1] "character"
R> class(df$b)
[1] "numeric"
R> class(df$c)
[1] "logical"
R> class(df$d)
[1] "integer"
R> class(df$e)
[1] "Date"
R> class(df$f)
[1] "difftime"親トピック: Rのデータ型およびクラスの透過層サポート