60 lines
1.9 KiB
R
60 lines
1.9 KiB
R
% Generated by roxygen2: do not edit by hand
|
|
% Please edit documentation in R/xgb.Booster.R
|
|
\name{xgb.is.same.Booster}
|
|
\alias{xgb.is.same.Booster}
|
|
\title{Check if two boosters share the same C object}
|
|
\usage{
|
|
xgb.is.same.Booster(obj1, obj2)
|
|
}
|
|
\arguments{
|
|
\item{obj1}{Booster model to compare with \code{obj2}.}
|
|
|
|
\item{obj2}{Booster model to compare with \code{obj1}.}
|
|
}
|
|
\value{
|
|
Either \code{TRUE} or \code{FALSE} according to whether the two boosters share
|
|
the underlying C object.
|
|
}
|
|
\description{
|
|
Checks whether two booster objects refer to the same underlying C object.
|
|
}
|
|
\details{
|
|
As booster objects (as returned by e.g. \link{xgb.train}) contain an R 'externalptr'
|
|
object, they don't follow typical copy-on-write semantics of other R objects - that is, if
|
|
one assigns a booster to a different variable and modifies that new variable through in-place
|
|
methods like \link{xgb.attr<-}, the modification will be applied to both the old and the new
|
|
variable, unlike typical R assignments which would only modify the latter.
|
|
|
|
This function allows checking whether two booster objects share the same 'externalptr',
|
|
regardless of the R attributes that they might have.
|
|
|
|
In order to duplicate a booster in such a way that the copy wouldn't share the same
|
|
'externalptr', one can use function \link{xgb.copy.Booster}.
|
|
}
|
|
\examples{
|
|
library(xgboost)
|
|
data(mtcars)
|
|
y <- mtcars$mpg
|
|
x <- as.matrix(mtcars[, -1])
|
|
model <- xgb.train(
|
|
params = list(nthread = 1),
|
|
data = xgb.DMatrix(x, label = y, nthread = 1),
|
|
nround = 3
|
|
)
|
|
|
|
model_shallow_copy <- model
|
|
xgb.is.same.Booster(model, model_shallow_copy) # same C object
|
|
|
|
model_deep_copy <- xgb.copy.Booster(model)
|
|
xgb.is.same.Booster(model, model_deep_copy) # different C objects
|
|
|
|
# In-place assignments modify all references,
|
|
# but not full/deep copies of the booster
|
|
xgb.attr(model_shallow_copy, "my_attr") <- 111
|
|
xgb.attr(model, "my_attr") # gets modified
|
|
xgb.attr(model_deep_copy, "my_attr") # doesn't get modified
|
|
}
|
|
\seealso{
|
|
\link{xgb.copy.Booster}
|
|
}
|