大規模なデータセットの分析での通常の操作は、データセットをランダムにサブセットにパーティショニングすることです。例3-16に示すとおり、Oracle R Enterpriseの埋込みRの実行を使用することでパーティションを分析できます。この例では、data.frame
オブジェクトを記号myData
を付けてローカルのRセッションに作成し、ランダムに生成された値のセットを含むそのオブジェクトに列を追加します。このデータセットをオブジェクトMYDATA
としてデータベース・メモリーにプッシュします。この例では、埋込みRの実行関数ore.groupApply
を呼び出し、パーティション列に基づいてデータをパーティショニングした後に、各パーティションにlm
関数を適用します。
例3-16 データのランダムなパーティショニング
N <- 200 k <- 5 myData <- data.frame(a=1:N,b=round(runif(N),2)) myData$partition <- sample(rep(1:k, each = N/k, length.out = N), replace = TRUE) MYDATA <- ore.push(myData) head(MYDATA) results <- ore.groupApply(MYDATA, MYDATA$partition, function(y) {lm(b~a,y)}, parallel = TRUE) length(results) results[[1]]例3-16のリスト
R> N <- 200 R> k <- 5 R> myData <- data.frame(a=1:N,b=round(runif(N),2)) R> myData$partition <- sample(rep(1:k, each = N/k, + length.out = N), replace = TRUE) R> MYDATA <- ore.push(myData) R> head(MYDATA) a b partition 1 1 0.89 2 2 2 0.31 4 3 3 0.39 5 4 4 0.66 3 5 5 0.01 1 6 6 0.12 4 R> results <- ore.groupApply(MYDATA, MYDATA$partition, + function(y) {lm(b~a,y)}, parallel = TRUE) R> length(results) [1] 5 R> results[[1]] Call: lm(formula = b ~ a, data = y) Coefficients: (Intercept) a 0.388795 0.001015