% 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. \code{\link[=xgb.train]{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 \code{\link[=xgb.attr<-]{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 \code{\link[=xgb.copy.Booster]{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{ \code{\link[=xgb.copy.Booster]{xgb.copy.Booster()}} }