MINI MINI MANI MO

Path : /opt/oracle/product/18c/dbhomeXE/R/library/OREembed/doc/man/ko/
File Upload :
Current File : //opt/oracle/product/18c/dbhomeXE/R/library/OREembed/doc/man/ko/ore.doEval.Rd

%
% Copyright (c) 2012, 2015, Oracle and/or its affiliates. All rights reserved.
%
%    NAME
%      ore.doEval.Rd - embedded functions
%
%    DESCRIPTION
%      Methods for embedded R execution.
%
%    NOTES
%
%    MODIFIED (MM/DD/YY)
%    qinwan    09/24/15 - update FUN argument description
%    ffeli     09/03/15 - add INDEX argument descriptions
%    qinwan    06/24/15 - add FUN.OWNER argument
%    qinwan    05/21/15 - support lob type
%    lbzhang   04/10/14 - add control arg ore.envAsEmptyenv
%    paboyoun  12/27/13 - add ore.parallel option
%    paboyoun  11/19/13 - add ore.na.omit control argument
%    paboyoun  05/09/13 - change parallel argument default value
%    lzhang    04/26/13 - bug 16587457: add DOP hint in ore.*Apply functions
%    demukhin  11/12/12 - add control arguments
%    qinwan    11/06/12 - doc R/Package version script
%    demukhin  11/02/12 - bug 14539151: document INDEX
%    demukhin  09/15/12 - prj: auto connect
%
\name{ore.doEval}
\alias{ore.doEval}
\alias{ore.groupApply}
\alias{ore.indexApply}
\alias{ore.rowApply}
\alias{ore.tableApply}
\title{
Oracle R Enterprise 포함된 R 스크립트 실행 함수
}
\description{
다양한 조건하에 Oracle 데이터베이스에서 함수를 실행합니다.
}
\usage{
ore.doEval(FUN, ..., FUN.VALUE = NULL, FUN.NAME = NULL, FUN.OWNER = NULL)
ore.groupApply(X, INDEX, FUN, ..., FUN.VALUE = NULL, 
               FUN.NAME = NULL, FUN.OWNER = NULL, 
               parallel = getOption("ore.parallel", NULL))
ore.indexApply(times, FUN, ..., FUN.VALUE = NULL, 
               FUN.NAME = NULL, FUN.OWNER = NULL, 
               parallel = getOption("ore.parallel", NULL))
ore.rowApply(X, FUN, ..., FUN.VALUE = NULL, 
             FUN.NAME = NULL, FUN.OWNER = NULL, rows = 1,
             parallel = getOption("ore.parallel", NULL))
ore.tableApply(X, FUN, ..., FUN.VALUE = NULL, 
               FUN.NAME = NULL, FUN.OWNER = NULL)
}
\arguments{
  \item{X}{
\code{\linkS4class{ore.frame}} 객체입니다.
}
  \item{INDEX}{
\code{\linkS4class{ore.vector}} 객체 또는 열을
    포함하는 \code{\linkS4class{ore.frame}} 또는 \code{\linkS4class{ore.factor}} 객체입니다. 이러한
    각 항목은 \code{X} 인수와 길이가 동일합니다. 이 옵션은 \code{X} 함수로 
    전송하기 전 \code{FUN}에서 데이터를 분할하는 데 사용됩니다. 
    상응하는 지원되는 R 유형은 logical, integer, numeric, 
    character, factor입니다.
}
  \item{times}{
함수를 실행하는 횟수입니다.
}
  \item{FUN}{
적용할 함수입니다. \code{ore.groupApply}, \code{ore.rowApply} 및 \code{ore.tableApply}
    함수의 경우 \code{FUN} 인수에 대한 첫번째
    인수는 \code{\link[base]{data.frame}} 객체를 나타내야
    합니다. \code{ore.indexApply} 함수의 경우
    \code{FUN}에 대한 첫번째 인수는 인덱스
    번호를 나타내야 합니다. \code{ore.doEval} 함수의 경우에는
    \code{FUN}에 대해 인수가 필요하지 않습니다. \code{FUN}(으)로 지정된 함수는 
    포함된 R API를 재귀적으로 호출할 수 없습니다. 
    \code{FUN.NAME} 인수에서는 사용할 수 없습니다.
}


      
      
      
      

  \item{\dots}{
\code{FUN}에 대한 추가 인수입니다.
    \code{ore.}(으)로 시작하는 인수는 특수 제어
    인수입니다. 이 인수는 \code{FUN} 또는 \code{FUN.NAME} 인수로 지정된 함수에
    전달되지 않으며, 대신 클로저 실행 전후에 발생하는
    사항을 제어합니다. 다음과 같은 제어 인수가
    지원됩니다.
    \\enumerate{
      \item \code{ore.drop} - 입력 데이터의 객체 유형을
      제어합니다. \code{TRUE}의 경우 한 개의 열 \code{data.frame}이(가) \code{vector}(으)로
      변환됩니다. 기본값은 \code{TRUE}입니다.
      \item \code{ore.na.omit} - 입력 데이터에서 누락 값의 처리를
      제어합니다. \code{TRUE}의 경우 \code{ore.drop} 설정에 따라
      누락 값을 포함하는 행 또는 벡터 요소가 입력
      데이터에서 제거됩니다. 조각의 모든 행에 누락 값이
      포함된 경우 해당 조각의 입력 데이터는 빈 \code{data.frame} 또는
      \code{vector}입니다. 기본값은
      \code{FALSE}입니다.
      \item \code{ore.connect} - 클로저 내부의 Oracle R Enterprise에
      자동으로 접속할지 여부를 제어합니다. 이는
      클라이언트 세션과 동일한 인증서를 사용한 \code{ore.connect}
      호출 수행과 동일합니다. 기본값은
      \code{FALSE}입니다.
      \item \code{ore.graphics} - 그래픽 드라이버를 시작하고 이미지를
      검색할지 여부를 제어합니다. 기본값은 \code{TRUE}입니다. 
      \item \code{ore.png.*} - \code{ore.graphics}이(가) \code{TRUE}인 경우
      \code{\link[grDevices]{png}} 그래픽 장치 드라이버의
      추가 매개변수입니다. 이러한 인수의 이름 지정 규칙은
      \code{ore.png.} 함수의 인수에 \code{\link[grDevices]{png}} 접두어를 추가하는
      것입니다. 예를 들어, \code{ore.png.height}이(가)
      제공된 경우 \code{height} 인수가 \code{\link[grDevices]{png}}
      함수에 전달됩니다. 설정되지 않은 경우
      \code{\link[grDevices]{png}} 함수의 표준 기본값이
      사용됩니다.
      \item \code{ore.envAsEmptyenv} - 객체의 참조된 환경이 직렬화 동안
      빈 환경으로 바뀌어야 할지 여부를 제어합니다.
      \code{list} 및 \code{formula}과(와) 같은 일부 입력 매개변수 유형과
      반환된 객체는 데이터베이스에 저장되기 전에
      직렬화됩니다. \code{TRUE}의 경우
      객체의 참조된 환경은 상위가 \code{.GlobalEnv}인
      빈 환경으로 바뀌므로 원본
      참조된 환경의 객체가 직렬화되지
      않습니다. 이렇게 할 때 직렬화된 객체의 크기가
      상당히 줄어드는 경우도 있습니다. \code{FALSE}의 경우 참조된 환경의
      모든 객체는 직렬화되고, 나중에 직렬화 해제되고
      복구될 수 있습니다. 기본값은
      전역 옵션 \code{ore.envAsEmptyenv}(으)로 제어됩니다.
    }
}

  \item{FUN.VALUE}{
반환 값에 대한 템플리트로
    사용할 \code{data.frame} 또는 \code{\linkS4class{ore.frame}}입니다.
    \code{ora.type} 속성을 \code{data.frame} 열에 적용해서 \code{\linkS4class{ore.frame}}의 해당
    출력 열이 \code{CLOB} 또는 \code{BLOB} 유형을 사용하도록 
    지정할 수 있습니다.
}


      
      
      
      
      
      
      



      
      
  \item{FUN.NAME}{
Oracle R Enterprise 데이터베이스 내 \R 스크립트 아카이브
    내에서 단일 \R 함수 정의를 포함하는 직렬화된 \R
    스크립트의 이름을 지정하는 문자열입니다. \code{FUN}에 사용할 수
    없습니다.
    Oracle R Enterprise에는 미리 정의된 여러 그래픽 스크립트가 제공됩니다.
    미리 정의된 모든 스크립트에는 \code{RQG$}(으)로 시작하고 스크립트에
    포함된 \\pkg{graphics} 패키지의 함수 이름으로 표시되는 예약
    이름이 포함됩니다. 처음 사용하는 함수에 따라 입력 \code{\link[base]{data.frame}}의
    첫번째, 첫번째와 두번째 또는 모든 열이
    사용됩니다. 따라서 미리 정의된 스크립트는
    \code{ore.tableApply}, \code{ore.groupApply} 또는 \code{ore.rowApply}에서만 사용할 수
    있습니다. 각 함수에는 \code{...}도 있으므로
    포함하는 함수에 모든 매개변수를 전달할 수 있습니다. 다음은
    미리 정의된 그래픽 스크립트의 목록입니다.
    \\enumerate{
      \item \code{RQG$plot1d} - \code{\link[graphics]{plot}}의 래퍼입니다.
      입력 \code{\link[base]{data.frame}} 객체의 첫번째 열에서
      작동합니다.
      \item \code{RQG$plot2d} - \code{\link[graphics]{plot}}의 래퍼입니다.
      입력 \code{\link[base]{data.frame}} 객체의 처음 두 열에서
      작동합니다.
      \item \code{RQG$hist} - \code{\link[graphics]{hist}}의 래퍼입니다.
      입력 \code{\link[base]{data.frame}} 객체의 첫번째 열에서
      작동합니다.
      \item \code{RQG$boxplot} - \code{\link[graphics]{boxplot}}의 래퍼입니다.
      입력 \code{\link[base]{data.frame}} 객체의 첫번째 열에서
      작동합니다.
      \item \code{RQG$smoothScatter} - \code{\link[graphics]{smoothScatter}}의 래퍼입니다.
      입력 \code{\link[base]{data.frame}} 객체의 처음 두 열에서
      작동합니다.
      \item \code{RQG$cdplot} - \code{\link[graphics]{cdplot}}의 래퍼입니다.
      입력 \code{\link[base]{data.frame}} 객체의 처음 두 열에서
      작동합니다.
      \item \code{RQG$pairs} - \code{\link[graphics]{pairs}}의 래퍼입니다.
      입력 \code{\link[base]{data.frame}} 객체의 모든 열에서
      작동합니다.
      \item \code{RQG$matplot} - \code{\link[graphics]{matplot}}의 래퍼입니다.
      입력 \code{\link[base]{data.frame}} 객체의 모든 열에서
      작동합니다.
    }
    Oracle R Enterprise에는 또한 미리 정의된 여러 \R 및 패키지 버전 스크립트가
    제공됩니다. 이러한 스크립트는 \code{RQ$}(으)로 시작하고 스크립트가
    포함하는 \R 함수 이름으로 표시되며 \code{ore.doEval}에서만 사용할 수
    있습니다. 다음은 미리 정의된 스크립트의
    목록입니다.
    \\enumerate{
      \item \code{RQ$R.Version} - \code{\link[base]{R.Version}}의 래퍼입니다.
      인수를 사용하지 않고 \R 버전 관련 정보를 반환합니다.
      \item \code{RQ$getRversion} - \code{\link[base]{getRversion}}의 래퍼입니다.
      인수를 사용하지 않고 \R 버전 번호를
      반환합니다.
      \item \code{RQ$installed.packages} - \code{\link[utils]{installed.packages}}의 래퍼입니다.
      인수를 사용하지 않고,
      패키지 이름, 버전 번호 및 설치된 패키지의 패키지
      설치 위치를 반환합니다.
      \item \code{RQ$packageVersion} - \code{\link[utils]{packageVersion}}의 래퍼입니다.
      패키지 이름을 인수로 사용하고
      패키지 버전 번호를 반환합니다.
    }
}
  \item{FUN.OWNER}{
\code{FUN.NAME} \R 스크립트의 소유자를 지정하는 선택적인 
    문자열입니다. \code{\link{ore.scriptCreate}}를 사용해서 \R 스크립트를 생성하는 
    사용자는 해당 스크립트의 소유자입니다. \code{RQSYS} 
    스키마는 전역 및 미리 정의된 \R 스크립트의 소유자입니다. 
    \code{FUN.OWNER}이(가) 지정되지 않았거나 \code{NULL}이면 
    Oracle R Enterprise가 다음 순서로 소유자를 찾습니다. 
    현재 세션의 사용자, \code{RQSYS}. \code{FUN.OWNER} 인수는
    \code{FUN.NAME} 인수에서만 사용됩니다.
}
  \item{rows}{
각 조각의 최대 행 수입니다.
}
  \item{parallel}{
포함된 R 작업에서 사용할 원하는 병렬도입니다.
    특정 병렬도에 대해 \code{2}보다 크거나
    같은 양의 정수,
    병렬화를 사용하지 않는 경우 \code{FALSE} 또는 \code{1} 값,
    \code{TRUE} 인수의 기본 병렬화의 경우
    \code{data} 값 또는
    작업의 데이터베이스 기본값의 경우 \code{NULL}입니다.
    기본값은 전역 옵션 \code{ore.parallel}(으)로 지정됩니다.
}
}








\details{
\code{ore.doEval} 함수는 Oracle 데이터베이스에서 실행 중인
  \R 프로세스 내에서 \code{FUN} 또는 \code{FUN.NAME} 함수를 실행합니다.
  \code{ore.groupApply} 함수는 (잠재적으로 파생된) 열별로 데이터베이스
  내 데이터 집합을 분할하고, Oracle 데이터베이스에서 실행 중인
  \R 프로세스 내에서 이러한 분할 영역에 함수를 실행합니다. 각
  분할 영역은 단일 \R 프로세스 안에 완전히 맞아야 합니다.
  \code{ore.indexApply} 함수는 Oracle 데이터베이스에서 \code{index}
  함수를 여러 번 실행합니다.
  \code{ore.rowApply} 함수는 데이터베이스 내 데이터 집합을 행 조각으로
  분할하고, Oracle 데이터베이스에서 실행 중인 \R 프로세스 내에서
  이러한 분할 영역에 함수를 실행합니다. 각 분할 영역은 단일 \R
  프로세스 안에 완전히 맞아야 합니다.
  \code{ore.tableApply} 함수는 데이터베이스 내 데이터 집합에 함수를
  실행합니다.
  \code{FUN} 또는 \code{FUN.NAME} 인수를 제공해야 합니다. 보안상
  이유로 \code{FUN} 인수를 사용하려면
  \\option{RQADMIN} Oracle 데이터베이스 권한이 필요합니다. \\option{RQADMIN} 인증서를
  가진 누군가가 \code{FUN.NAME} 인수로 표시된 \R 스크립트 생성을 게시했으므로
  Oracle R Enterprise 사용 권한이 부여된 누구나
  사용할 수 있습니다.
  \code{FUN.OWNER} 인수는 \code{FUN.NAME} 인수와 함께 사용해서 \R 
  스크립트 저장소에 정의된 \R 함수를 고유하게 지정할 수 수 있습니다.
  \code{parallel} 인수는 기본 SQL 질의에 추가하려는
  \\option{/*+ parallel */}, \\option{/*+ parallel(DOP) */} 또는
  \\option{/*+ no_parallel */} 힌트의 사용을 제어합니다.
  자세한 내용은 Oracle 데이터베이스 설명서를 참조하십시오.
  \code{FUN} 또는 \code{FUN.NAME} 인수를 통해 지정된 적용할 함수는
  이를 호출하는 클라이언트 세션과 동일한 인증서를 사용하여
  Oracle R Enterprise에 자동으로 접속됩니다. \code{ore.connect}에 상응하는
  항목만 호출됩니다. \code{ore.sync}, \code{ore.attach} 및
  \code{ore.get}과(와) 같은 함수는 명시적으로
  호출해야 합니다.
}

\value{
\code{FUN.VALUE} 인수가 제공된 경우
  \code{\linkS4class{ore.frame}} 템플리트를 따르는
  \code{FUN.VALUE} 객체가 반환됩니다.
  \code{FUN.VALUE} 인수가 제공되지 않은 경우
  \code{ore.doEval} 및 \code{ore.tableApply} 함수는
  \code{\linkS4class{ore.object}}을(를) 반환하고
  \code{ore.groupApply}, \code{ore.indexApply}, \code{ore.rowApply} 함수는
  \code{\linkS4class{ore.list}}을(를) 반환합니다.
}
\references{
  \href{http://www.oracle.com/technetwork/database/database-technologies/r/r-enterprise/documentation/index.html}{Oracle R Enterprise}
}
\author{
  Oracle \email{oracle-r-enterprise@oracle.com}
}
\seealso{
  \code{\link{ore.scriptCreate}},
  \code{\link[OREbase]{ore.options}}
}
\examples{
## ore.doEval
eval1 <- ore.doEval(function() "Hello, world")
eval2 <-
  ore.doEval(function()
             data.frame(x = "Hello, world", stringsAsFactors = FALSE))
eval3 <-
  ore.doEval(function()
             data.frame(x = "Hello, world", stringsAsFactors = FALSE),
             FUN.VALUE =
             data.frame(x = character(), stringsAsFactors = FALSE))
out.df <- data.frame(x = character(), y = raw(), stringsAsFactors = FALSE)
attr(out.df$x, "ora.type") <- "clob"
attr(out.df$y, "ora.type") <- "blob"
eval4 <- 
  ore.doEval(function() {
             res <- data.frame(x = "Hello, world",stringsAsFactors = FALSE)
             res$y[[1L]] <- charToRaw("Hello, world")
             res},
             FUN.VALUE = out.df)
eval1
class(eval1)  # ore.object
eval2
class(eval2)  # ore.object
eval3
class(eval3)  # ore.frame
eval4$x
rawToChar(ore.pull(eval4$y))

## copy data to the database
IRIS <- ore.push(iris)

## ore.groupApply
grpAp1 <-
  ore.groupApply(IRIS, IRIS$Species,
                 function(df)
                 if(nrow(df) == 0)
                     NULL
                 else
                     summary(lm(Sepal.Length ~ .,  data = df[1:4])),
                 parallel = TRUE)
grpAp2 <-
  ore.groupApply(IRIS, IRIS$Species,
                 function(df) {
                     if (nrow(df) == 0) {
                         species <- character()
                         cf <- numeric()
                         names(cf) <- character()
                     } else {
                         species <- as.character(df$Species[1])
                         cf <- coef(lm(Sepal.Length ~ .,
                                       data = df[1:4]))
                     }
                     data.frame(Species = species,
                                CoefName = names(cf),
                                CoefValue = unname(cf),
                                stringsAsFactors = FALSE)
                 },
                 FUN.VALUE =
                 data.frame(Species = character(),
                            CoefName = character(),
                            CoefValue = numeric(),
                            stringsAsFactors = FALSE),
                 parallel = TRUE)
class(grpAp1)  # ore.list
class(grpAp2)  # ore.frame

## ore.indexApply
ore.indexApply(5, function(i) i)
if (interactive())
    ore.indexApply(5, function(i) summary(rnorm(100)), parallel = TRUE)

## ore.rowApply
# create a classification tree for iris data
library(rpart)
irisRpart <- rpart(Species ~ ., data = iris)

irisPred <-
  ore.rowApply(IRIS,
               function(df, model) {
                   library(rpart)
                   cbind(df, PRED = predict(model, df, type = "class"))
               }, model = irisRpart,
               FUN.VALUE =
               cbind(iris[integer(),], PRED = character()),
               rows = 50, parallel = TRUE)

## ore.tableApply
ore.tableApply(IRIS, function(df) summary(df))
}
\keyword{data}
\keyword{programming}
\keyword{iteration}
\keyword{category}
\keyword{database}
\keyword{ORE}

OHA YOOOO