Skip to content

Commit

Permalink
fix attribute accessors C-interface for R
Browse files Browse the repository at this point in the history
  • Loading branch information
khotilov committed May 2, 2016
1 parent b5fb437 commit 0839aed
Show file tree
Hide file tree
Showing 2 changed files with 47 additions and 38 deletions.
50 changes: 29 additions & 21 deletions R-package/src/xgboost_R.cc
Original file line number Diff line number Diff line change
Expand Up @@ -229,27 +229,6 @@ SEXP XGBoosterCreate_R(SEXP dmats) {
return ret;
}

SEXP XGBoosterGetAttr_R(SEXP handle, SEXP name) {
const char* ret;
R_API_BEGIN();
int success;
CHECK_CALL(XGBoosterGetAttr(R_ExternalPtrAddr(handle),
CHAR(asChar(name)),
&ret,
&success));
R_API_END();
return mkString(ret);
}

SEXP XGBoosterSetAttr_R(SEXP handle, SEXP name, SEXP val) {
R_API_BEGIN();
CHECK_CALL(XGBoosterSetAttr(R_ExternalPtrAddr(handle),
CHAR(asChar(name)),
CHAR(asChar(val))));
R_API_END();
return R_NilValue;
}

SEXP XGBoosterSetParam_R(SEXP handle, SEXP name, SEXP val) {
R_API_BEGIN();
CHECK_CALL(XGBoosterSetParam(R_ExternalPtrAddr(handle),
Expand Down Expand Up @@ -388,3 +367,32 @@ SEXP XGBoosterDumpModel_R(SEXP handle, SEXP fmap, SEXP with_stats) {
R_API_END();
return out;
}

SEXP XGBoosterGetAttr_R(SEXP handle, SEXP name) {
SEXP out;
R_API_BEGIN();
int success;
const char *val;
CHECK_CALL(XGBoosterGetAttr(R_ExternalPtrAddr(handle),
CHAR(asChar(name)),
&val,
&success));
if (success) {
out = PROTECT(allocVector(STRSXP, 1));
SET_STRING_ELT(out, 0, mkChar(val));
} else {
out = PROTECT(R_NilValue);
}
UNPROTECT(1);
R_API_END();
return out;
}

SEXP XGBoosterSetAttr_R(SEXP handle, SEXP name, SEXP val) {
R_API_BEGIN();
CHECK_CALL(XGBoosterSetAttr(R_ExternalPtrAddr(handle),
CHAR(asChar(name)),
CHAR(asChar(val))));
R_API_END();
return R_NilValue;
}
35 changes: 18 additions & 17 deletions R-package/src/xgboost_R.h
Original file line number Diff line number Diff line change
Expand Up @@ -101,23 +101,6 @@ XGB_DLL SEXP XGDMatrixNumCol_R(SEXP handle);
*/
XGB_DLL SEXP XGBoosterCreate_R(SEXP dmats);

/*!
* \brief get learner attribute value
* \param handle handle
* \param name attribute name
* \return string containing attribute value
*/
XGB_DLL SEXP XGBoosterGetAttr_R(SEXP handle, SEXP name);

/*!
* \brief set learner attribute value
* \param handle handle
* \param name attribute name
* \param val attribute value
* \return R_NilValue
*/
XGB_DLL SEXP XGBoosterSetAttr_R(SEXP handle, SEXP name, SEXP val);

/*!
* \brief set parameters
* \param handle handle
Expand Down Expand Up @@ -202,4 +185,22 @@ XGB_DLL SEXP XGBoosterModelToRaw_R(SEXP handle);
* \param with_stats whether dump statistics of splits
*/
XGB_DLL SEXP XGBoosterDumpModel_R(SEXP handle, SEXP fmap, SEXP with_stats);

/*!
* \brief get learner attribute value
* \param handle handle
* \param name attribute name
* \return character containing attribute value
*/
XGB_DLL SEXP XGBoosterGetAttr_R(SEXP handle, SEXP name);

/*!
* \brief set learner attribute value
* \param handle handle
* \param name attribute name
* \param val attribute value
* \return R_NilValue
*/
XGB_DLL SEXP XGBoosterSetAttr_R(SEXP handle, SEXP name, SEXP val);

#endif // XGBOOST_WRAPPER_R_H_ // NOLINT(*)

0 comments on commit 0839aed

Please sign in to comment.