Unverified Commit ec874325 authored by James Lamb's avatar James Lamb Committed by GitHub
Browse files

[R-package] Use R standard routines to access character data in C++ (#4252)

* converted LGBM_BoosterSaveModel_R

* switch all other non-params cases

* handle params
parent d511f1a7
...@@ -90,7 +90,7 @@ Booster <- R6::R6Class( ...@@ -90,7 +90,7 @@ Booster <- R6::R6Class(
# Create booster from model # Create booster from model
.Call( .Call(
LGBM_BoosterCreateFromModelfile_R LGBM_BoosterCreateFromModelfile_R
, lgb.c_str(x = modelfile) , modelfile
, handle , handle
) )
...@@ -104,7 +104,7 @@ Booster <- R6::R6Class( ...@@ -104,7 +104,7 @@ Booster <- R6::R6Class(
# Create booster from model # Create booster from model
.Call( .Call(
LGBM_BoosterLoadModelFromString_R LGBM_BoosterLoadModelFromString_R
, lgb.c_str(x = model_str) , model_str
, handle , handle
) )
...@@ -452,7 +452,7 @@ Booster <- R6::R6Class( ...@@ -452,7 +452,7 @@ Booster <- R6::R6Class(
, private$handle , private$handle
, as.integer(num_iteration) , as.integer(num_iteration)
, as.integer(feature_importance_type) , as.integer(feature_importance_type)
, lgb.c_str(x = filename) , filename
) )
return(invisible(self)) return(invisible(self))
......
...@@ -202,7 +202,7 @@ Dataset <- R6::R6Class( ...@@ -202,7 +202,7 @@ Dataset <- R6::R6Class(
.Call( .Call(
LGBM_DatasetCreateFromFile_R LGBM_DatasetCreateFromFile_R
, lgb.c_str(x = private$raw_data) , private$raw_data
, params_str , params_str
, ref_handle , ref_handle
, handle , handle
...@@ -436,7 +436,7 @@ Dataset <- R6::R6Class( ...@@ -436,7 +436,7 @@ Dataset <- R6::R6Class(
.Call( .Call(
LGBM_DatasetSetFeatureNames_R LGBM_DatasetSetFeatureNames_R
, private$handle , private$handle
, lgb.c_str(x = merged_name) , merged_name
) )
} }
...@@ -468,7 +468,7 @@ Dataset <- R6::R6Class( ...@@ -468,7 +468,7 @@ Dataset <- R6::R6Class(
.Call( .Call(
LGBM_DatasetGetFieldSize_R LGBM_DatasetGetFieldSize_R
, private$handle , private$handle
, lgb.c_str(x = name) , name
, info_len , info_len
) )
...@@ -486,7 +486,7 @@ Dataset <- R6::R6Class( ...@@ -486,7 +486,7 @@ Dataset <- R6::R6Class(
.Call( .Call(
LGBM_DatasetGetField_R LGBM_DatasetGetField_R
, private$handle , private$handle
, lgb.c_str(x = name) , name
, ret , ret
) )
...@@ -527,7 +527,7 @@ Dataset <- R6::R6Class( ...@@ -527,7 +527,7 @@ Dataset <- R6::R6Class(
.Call( .Call(
LGBM_DatasetSetField_R LGBM_DatasetSetField_R
, private$handle , private$handle
, lgb.c_str(x = name) , name
, info , info
, length(info) , length(info)
) )
...@@ -678,7 +678,7 @@ Dataset <- R6::R6Class( ...@@ -678,7 +678,7 @@ Dataset <- R6::R6Class(
.Call( .Call(
LGBM_DatasetSaveBinary_R LGBM_DatasetSaveBinary_R
, private$handle , private$handle
, lgb.c_str(x = fname) , fname
) )
return(invisible(self)) return(invisible(self))
} }
......
...@@ -39,7 +39,7 @@ Predictor <- R6::R6Class( ...@@ -39,7 +39,7 @@ Predictor <- R6::R6Class(
# Create handle on it # Create handle on it
.Call( .Call(
LGBM_BoosterCreateFromModelfile_R LGBM_BoosterCreateFromModelfile_R
, lgb.c_str(x = modelfile) , modelfile
, handle , handle
) )
private$need_free_handle <- TRUE private$need_free_handle <- TRUE
...@@ -117,7 +117,7 @@ Predictor <- R6::R6Class( ...@@ -117,7 +117,7 @@ Predictor <- R6::R6Class(
, as.integer(start_iteration) , as.integer(start_iteration)
, as.integer(num_iteration) , as.integer(num_iteration)
, private$params , private$params
, lgb.c_str(x = tmp_filename) , tmp_filename
) )
# Get predictions from file # Get predictions from file
......
...@@ -89,10 +89,10 @@ lgb.params2str <- function(params, ...) { ...@@ -89,10 +89,10 @@ lgb.params2str <- function(params, ...) {
# Check ret length # Check ret length
if (length(ret) == 0L) { if (length(ret) == 0L) {
return(lgb.c_str(x = "")) return("")
} }
return(lgb.c_str(x = paste0(ret, collapse = " "))) return(paste0(ret, collapse = " "))
} }
...@@ -154,13 +154,6 @@ lgb.check_interaction_constraints <- function(interaction_constraints, column_na ...@@ -154,13 +154,6 @@ lgb.check_interaction_constraints <- function(interaction_constraints, column_na
} }
lgb.c_str <- function(x) {
ret <- charToRaw(as.character(x))
ret <- c(ret, as.raw(0L))
return(ret)
}
lgb.check.r6.class <- function(object, name) { lgb.check.r6.class <- function(object, name) {
......
...@@ -64,13 +64,13 @@ SEXP LGBM_GetLastError_R() { ...@@ -64,13 +64,13 @@ SEXP LGBM_GetLastError_R() {
return out; return out;
} }
SEXP LGBM_DatasetCreateFromFile_R(LGBM_SE filename, SEXP LGBM_DatasetCreateFromFile_R(SEXP filename,
LGBM_SE parameters, SEXP parameters,
LGBM_SE reference, LGBM_SE reference,
LGBM_SE out) { LGBM_SE out) {
R_API_BEGIN(); R_API_BEGIN();
DatasetHandle handle = nullptr; DatasetHandle handle = nullptr;
CHECK_CALL(LGBM_DatasetCreateFromFile(R_CHAR_PTR(filename), R_CHAR_PTR(parameters), CHECK_CALL(LGBM_DatasetCreateFromFile(CHAR(Rf_asChar(filename)), CHAR(Rf_asChar(parameters)),
R_GET_PTR(reference), &handle)); R_GET_PTR(reference), &handle));
R_SET_PTR(out, handle); R_SET_PTR(out, handle);
R_API_END(); R_API_END();
...@@ -82,7 +82,7 @@ SEXP LGBM_DatasetCreateFromCSC_R(SEXP indptr, ...@@ -82,7 +82,7 @@ SEXP LGBM_DatasetCreateFromCSC_R(SEXP indptr,
SEXP num_indptr, SEXP num_indptr,
SEXP nelem, SEXP nelem,
SEXP num_row, SEXP num_row,
LGBM_SE parameters, SEXP parameters,
LGBM_SE reference, LGBM_SE reference,
LGBM_SE out) { LGBM_SE out) {
R_API_BEGIN(); R_API_BEGIN();
...@@ -96,7 +96,7 @@ SEXP LGBM_DatasetCreateFromCSC_R(SEXP indptr, ...@@ -96,7 +96,7 @@ SEXP LGBM_DatasetCreateFromCSC_R(SEXP indptr,
DatasetHandle handle = nullptr; DatasetHandle handle = nullptr;
CHECK_CALL(LGBM_DatasetCreateFromCSC(p_indptr, C_API_DTYPE_INT32, p_indices, CHECK_CALL(LGBM_DatasetCreateFromCSC(p_indptr, C_API_DTYPE_INT32, p_indices,
p_data, C_API_DTYPE_FLOAT64, nindptr, ndata, p_data, C_API_DTYPE_FLOAT64, nindptr, ndata,
nrow, R_CHAR_PTR(parameters), R_GET_PTR(reference), &handle)); nrow, CHAR(Rf_asChar(parameters)), R_GET_PTR(reference), &handle));
R_SET_PTR(out, handle); R_SET_PTR(out, handle);
R_API_END(); R_API_END();
} }
...@@ -104,7 +104,7 @@ SEXP LGBM_DatasetCreateFromCSC_R(SEXP indptr, ...@@ -104,7 +104,7 @@ SEXP LGBM_DatasetCreateFromCSC_R(SEXP indptr,
SEXP LGBM_DatasetCreateFromMat_R(SEXP data, SEXP LGBM_DatasetCreateFromMat_R(SEXP data,
SEXP num_row, SEXP num_row,
SEXP num_col, SEXP num_col,
LGBM_SE parameters, SEXP parameters,
LGBM_SE reference, LGBM_SE reference,
LGBM_SE out) { LGBM_SE out) {
R_API_BEGIN(); R_API_BEGIN();
...@@ -113,7 +113,7 @@ SEXP LGBM_DatasetCreateFromMat_R(SEXP data, ...@@ -113,7 +113,7 @@ SEXP LGBM_DatasetCreateFromMat_R(SEXP data,
double* p_mat = REAL(data); double* p_mat = REAL(data);
DatasetHandle handle = nullptr; DatasetHandle handle = nullptr;
CHECK_CALL(LGBM_DatasetCreateFromMat(p_mat, C_API_DTYPE_FLOAT64, nrow, ncol, COL_MAJOR, CHECK_CALL(LGBM_DatasetCreateFromMat(p_mat, C_API_DTYPE_FLOAT64, nrow, ncol, COL_MAJOR,
R_CHAR_PTR(parameters), R_GET_PTR(reference), &handle)); CHAR(Rf_asChar(parameters)), R_GET_PTR(reference), &handle));
R_SET_PTR(out, handle); R_SET_PTR(out, handle);
R_API_END(); R_API_END();
} }
...@@ -121,7 +121,7 @@ SEXP LGBM_DatasetCreateFromMat_R(SEXP data, ...@@ -121,7 +121,7 @@ SEXP LGBM_DatasetCreateFromMat_R(SEXP data,
SEXP LGBM_DatasetGetSubset_R(LGBM_SE handle, SEXP LGBM_DatasetGetSubset_R(LGBM_SE handle,
SEXP used_row_indices, SEXP used_row_indices,
SEXP len_used_row_indices, SEXP len_used_row_indices,
LGBM_SE parameters, SEXP parameters,
LGBM_SE out) { LGBM_SE out) {
R_API_BEGIN(); R_API_BEGIN();
int len = Rf_asInteger(len_used_row_indices); int len = Rf_asInteger(len_used_row_indices);
...@@ -133,16 +133,16 @@ SEXP LGBM_DatasetGetSubset_R(LGBM_SE handle, ...@@ -133,16 +133,16 @@ SEXP LGBM_DatasetGetSubset_R(LGBM_SE handle,
} }
DatasetHandle res = nullptr; DatasetHandle res = nullptr;
CHECK_CALL(LGBM_DatasetGetSubset(R_GET_PTR(handle), CHECK_CALL(LGBM_DatasetGetSubset(R_GET_PTR(handle),
idxvec.data(), len, R_CHAR_PTR(parameters), idxvec.data(), len, CHAR(Rf_asChar(parameters)),
&res)); &res));
R_SET_PTR(out, res); R_SET_PTR(out, res);
R_API_END(); R_API_END();
} }
SEXP LGBM_DatasetSetFeatureNames_R(LGBM_SE handle, SEXP LGBM_DatasetSetFeatureNames_R(LGBM_SE handle,
LGBM_SE feature_names) { SEXP feature_names) {
R_API_BEGIN(); R_API_BEGIN();
auto vec_names = Split(R_CHAR_PTR(feature_names), '\t'); auto vec_names = Split(CHAR(Rf_asChar(feature_names)), '\t');
std::vector<const char*> vec_sptr; std::vector<const char*> vec_sptr;
int len = static_cast<int>(vec_names.size()); int len = static_cast<int>(vec_names.size());
for (int i = 0; i < len; ++i) { for (int i = 0; i < len; ++i) {
...@@ -183,10 +183,10 @@ SEXP LGBM_DatasetGetFeatureNames_R(LGBM_SE handle, ...@@ -183,10 +183,10 @@ SEXP LGBM_DatasetGetFeatureNames_R(LGBM_SE handle,
} }
SEXP LGBM_DatasetSaveBinary_R(LGBM_SE handle, SEXP LGBM_DatasetSaveBinary_R(LGBM_SE handle,
LGBM_SE filename) { SEXP filename) {
R_API_BEGIN(); R_API_BEGIN();
CHECK_CALL(LGBM_DatasetSaveBinary(R_GET_PTR(handle), CHECK_CALL(LGBM_DatasetSaveBinary(R_GET_PTR(handle),
R_CHAR_PTR(filename))); CHAR(Rf_asChar(filename))));
R_API_END(); R_API_END();
} }
...@@ -200,12 +200,12 @@ SEXP LGBM_DatasetFree_R(LGBM_SE handle) { ...@@ -200,12 +200,12 @@ SEXP LGBM_DatasetFree_R(LGBM_SE handle) {
} }
SEXP LGBM_DatasetSetField_R(LGBM_SE handle, SEXP LGBM_DatasetSetField_R(LGBM_SE handle,
LGBM_SE field_name, SEXP field_name,
SEXP field_data, SEXP field_data,
SEXP num_element) { SEXP num_element) {
R_API_BEGIN(); R_API_BEGIN();
int len = static_cast<int>(Rf_asInteger(num_element)); int len = static_cast<int>(Rf_asInteger(num_element));
const char* name = R_CHAR_PTR(field_name); const char* name = CHAR(Rf_asChar(field_name));
if (!strcmp("group", name) || !strcmp("query", name)) { if (!strcmp("group", name) || !strcmp("query", name)) {
std::vector<int32_t> vec(len); std::vector<int32_t> vec(len);
#pragma omp parallel for schedule(static, 512) if (len >= 1024) #pragma omp parallel for schedule(static, 512) if (len >= 1024)
...@@ -227,10 +227,10 @@ SEXP LGBM_DatasetSetField_R(LGBM_SE handle, ...@@ -227,10 +227,10 @@ SEXP LGBM_DatasetSetField_R(LGBM_SE handle,
} }
SEXP LGBM_DatasetGetField_R(LGBM_SE handle, SEXP LGBM_DatasetGetField_R(LGBM_SE handle,
LGBM_SE field_name, SEXP field_name,
SEXP field_data) { SEXP field_data) {
R_API_BEGIN(); R_API_BEGIN();
const char* name = R_CHAR_PTR(field_name); const char* name = CHAR(Rf_asChar(field_name));
int out_len = 0; int out_len = 0;
int out_type = 0; int out_type = 0;
const void* res; const void* res;
...@@ -260,10 +260,10 @@ SEXP LGBM_DatasetGetField_R(LGBM_SE handle, ...@@ -260,10 +260,10 @@ SEXP LGBM_DatasetGetField_R(LGBM_SE handle,
} }
SEXP LGBM_DatasetGetFieldSize_R(LGBM_SE handle, SEXP LGBM_DatasetGetFieldSize_R(LGBM_SE handle,
LGBM_SE field_name, SEXP field_name,
SEXP out) { SEXP out) {
R_API_BEGIN(); R_API_BEGIN();
const char* name = R_CHAR_PTR(field_name); const char* name = CHAR(Rf_asChar(field_name));
int out_len = 0; int out_len = 0;
int out_type = 0; int out_type = 0;
const void* res; const void* res;
...@@ -275,10 +275,10 @@ SEXP LGBM_DatasetGetFieldSize_R(LGBM_SE handle, ...@@ -275,10 +275,10 @@ SEXP LGBM_DatasetGetFieldSize_R(LGBM_SE handle,
R_API_END(); R_API_END();
} }
SEXP LGBM_DatasetUpdateParamChecking_R(LGBM_SE old_params, SEXP LGBM_DatasetUpdateParamChecking_R(SEXP old_params,
LGBM_SE new_params) { SEXP new_params) {
R_API_BEGIN(); R_API_BEGIN();
CHECK_CALL(LGBM_DatasetUpdateParamChecking(R_CHAR_PTR(old_params), R_CHAR_PTR(new_params))); CHECK_CALL(LGBM_DatasetUpdateParamChecking(CHAR(Rf_asChar(old_params)), CHAR(Rf_asChar(new_params))));
R_API_END(); R_API_END();
} }
...@@ -311,31 +311,31 @@ SEXP LGBM_BoosterFree_R(LGBM_SE handle) { ...@@ -311,31 +311,31 @@ SEXP LGBM_BoosterFree_R(LGBM_SE handle) {
} }
SEXP LGBM_BoosterCreate_R(LGBM_SE train_data, SEXP LGBM_BoosterCreate_R(LGBM_SE train_data,
LGBM_SE parameters, SEXP parameters,
LGBM_SE out) { LGBM_SE out) {
R_API_BEGIN(); R_API_BEGIN();
BoosterHandle handle = nullptr; BoosterHandle handle = nullptr;
CHECK_CALL(LGBM_BoosterCreate(R_GET_PTR(train_data), R_CHAR_PTR(parameters), &handle)); CHECK_CALL(LGBM_BoosterCreate(R_GET_PTR(train_data), CHAR(Rf_asChar(parameters)), &handle));
R_SET_PTR(out, handle); R_SET_PTR(out, handle);
R_API_END(); R_API_END();
} }
SEXP LGBM_BoosterCreateFromModelfile_R(LGBM_SE filename, SEXP LGBM_BoosterCreateFromModelfile_R(SEXP filename,
LGBM_SE out) { LGBM_SE out) {
R_API_BEGIN(); R_API_BEGIN();
int out_num_iterations = 0; int out_num_iterations = 0;
BoosterHandle handle = nullptr; BoosterHandle handle = nullptr;
CHECK_CALL(LGBM_BoosterCreateFromModelfile(R_CHAR_PTR(filename), &out_num_iterations, &handle)); CHECK_CALL(LGBM_BoosterCreateFromModelfile(CHAR(Rf_asChar(filename)), &out_num_iterations, &handle));
R_SET_PTR(out, handle); R_SET_PTR(out, handle);
R_API_END(); R_API_END();
} }
SEXP LGBM_BoosterLoadModelFromString_R(LGBM_SE model_str, SEXP LGBM_BoosterLoadModelFromString_R(SEXP model_str,
LGBM_SE out) { LGBM_SE out) {
R_API_BEGIN(); R_API_BEGIN();
int out_num_iterations = 0; int out_num_iterations = 0;
BoosterHandle handle = nullptr; BoosterHandle handle = nullptr;
CHECK_CALL(LGBM_BoosterLoadModelFromString(R_CHAR_PTR(model_str), &out_num_iterations, &handle)); CHECK_CALL(LGBM_BoosterLoadModelFromString(CHAR(Rf_asChar(model_str)), &out_num_iterations, &handle));
R_SET_PTR(out, handle); R_SET_PTR(out, handle);
R_API_END(); R_API_END();
} }
...@@ -362,9 +362,9 @@ SEXP LGBM_BoosterResetTrainingData_R(LGBM_SE handle, ...@@ -362,9 +362,9 @@ SEXP LGBM_BoosterResetTrainingData_R(LGBM_SE handle,
} }
SEXP LGBM_BoosterResetParameter_R(LGBM_SE handle, SEXP LGBM_BoosterResetParameter_R(LGBM_SE handle,
LGBM_SE parameters) { SEXP parameters) {
R_API_BEGIN(); R_API_BEGIN();
CHECK_CALL(LGBM_BoosterResetParameter(R_GET_PTR(handle), R_CHAR_PTR(parameters))); CHECK_CALL(LGBM_BoosterResetParameter(R_GET_PTR(handle), CHAR(Rf_asChar(parameters))));
R_API_END(); R_API_END();
} }
...@@ -511,20 +511,20 @@ int GetPredictType(SEXP is_rawscore, SEXP is_leafidx, SEXP is_predcontrib) { ...@@ -511,20 +511,20 @@ int GetPredictType(SEXP is_rawscore, SEXP is_leafidx, SEXP is_predcontrib) {
} }
SEXP LGBM_BoosterPredictForFile_R(LGBM_SE handle, SEXP LGBM_BoosterPredictForFile_R(LGBM_SE handle,
LGBM_SE data_filename, SEXP data_filename,
SEXP data_has_header, SEXP data_has_header,
SEXP is_rawscore, SEXP is_rawscore,
SEXP is_leafidx, SEXP is_leafidx,
SEXP is_predcontrib, SEXP is_predcontrib,
SEXP start_iteration, SEXP start_iteration,
SEXP num_iteration, SEXP num_iteration,
LGBM_SE parameter, SEXP parameter,
LGBM_SE result_filename) { SEXP result_filename) {
R_API_BEGIN(); R_API_BEGIN();
int pred_type = GetPredictType(is_rawscore, is_leafidx, is_predcontrib); int pred_type = GetPredictType(is_rawscore, is_leafidx, is_predcontrib);
CHECK_CALL(LGBM_BoosterPredictForFile(R_GET_PTR(handle), R_CHAR_PTR(data_filename), CHECK_CALL(LGBM_BoosterPredictForFile(R_GET_PTR(handle), CHAR(Rf_asChar(data_filename)),
Rf_asInteger(data_has_header), pred_type, Rf_asInteger(start_iteration), Rf_asInteger(num_iteration), R_CHAR_PTR(parameter), Rf_asInteger(data_has_header), pred_type, Rf_asInteger(start_iteration), Rf_asInteger(num_iteration), CHAR(Rf_asChar(parameter)),
R_CHAR_PTR(result_filename))); CHAR(Rf_asChar(result_filename))));
R_API_END(); R_API_END();
} }
...@@ -557,7 +557,7 @@ SEXP LGBM_BoosterPredictForCSC_R(LGBM_SE handle, ...@@ -557,7 +557,7 @@ SEXP LGBM_BoosterPredictForCSC_R(LGBM_SE handle,
SEXP is_predcontrib, SEXP is_predcontrib,
SEXP start_iteration, SEXP start_iteration,
SEXP num_iteration, SEXP num_iteration,
LGBM_SE parameter, SEXP parameter,
SEXP out_result) { SEXP out_result) {
R_API_BEGIN(); R_API_BEGIN();
int pred_type = GetPredictType(is_rawscore, is_leafidx, is_predcontrib); int pred_type = GetPredictType(is_rawscore, is_leafidx, is_predcontrib);
...@@ -574,7 +574,7 @@ SEXP LGBM_BoosterPredictForCSC_R(LGBM_SE handle, ...@@ -574,7 +574,7 @@ SEXP LGBM_BoosterPredictForCSC_R(LGBM_SE handle,
CHECK_CALL(LGBM_BoosterPredictForCSC(R_GET_PTR(handle), CHECK_CALL(LGBM_BoosterPredictForCSC(R_GET_PTR(handle),
p_indptr, C_API_DTYPE_INT32, p_indices, p_indptr, C_API_DTYPE_INT32, p_indices,
p_data, C_API_DTYPE_FLOAT64, nindptr, ndata, p_data, C_API_DTYPE_FLOAT64, nindptr, ndata,
nrow, pred_type, Rf_asInteger(start_iteration), Rf_asInteger(num_iteration), R_CHAR_PTR(parameter), &out_len, ptr_ret)); nrow, pred_type, Rf_asInteger(start_iteration), Rf_asInteger(num_iteration), CHAR(Rf_asChar(parameter)), &out_len, ptr_ret));
R_API_END(); R_API_END();
} }
...@@ -587,7 +587,7 @@ SEXP LGBM_BoosterPredictForMat_R(LGBM_SE handle, ...@@ -587,7 +587,7 @@ SEXP LGBM_BoosterPredictForMat_R(LGBM_SE handle,
SEXP is_predcontrib, SEXP is_predcontrib,
SEXP start_iteration, SEXP start_iteration,
SEXP num_iteration, SEXP num_iteration,
LGBM_SE parameter, SEXP parameter,
SEXP out_result) { SEXP out_result) {
R_API_BEGIN(); R_API_BEGIN();
int pred_type = GetPredictType(is_rawscore, is_leafidx, is_predcontrib); int pred_type = GetPredictType(is_rawscore, is_leafidx, is_predcontrib);
...@@ -600,7 +600,7 @@ SEXP LGBM_BoosterPredictForMat_R(LGBM_SE handle, ...@@ -600,7 +600,7 @@ SEXP LGBM_BoosterPredictForMat_R(LGBM_SE handle,
int64_t out_len; int64_t out_len;
CHECK_CALL(LGBM_BoosterPredictForMat(R_GET_PTR(handle), CHECK_CALL(LGBM_BoosterPredictForMat(R_GET_PTR(handle),
p_mat, C_API_DTYPE_FLOAT64, nrow, ncol, COL_MAJOR, p_mat, C_API_DTYPE_FLOAT64, nrow, ncol, COL_MAJOR,
pred_type, Rf_asInteger(start_iteration), Rf_asInteger(num_iteration), R_CHAR_PTR(parameter), &out_len, ptr_ret)); pred_type, Rf_asInteger(start_iteration), Rf_asInteger(num_iteration), CHAR(Rf_asChar(parameter)), &out_len, ptr_ret));
R_API_END(); R_API_END();
} }
...@@ -608,9 +608,9 @@ SEXP LGBM_BoosterPredictForMat_R(LGBM_SE handle, ...@@ -608,9 +608,9 @@ SEXP LGBM_BoosterPredictForMat_R(LGBM_SE handle,
SEXP LGBM_BoosterSaveModel_R(LGBM_SE handle, SEXP LGBM_BoosterSaveModel_R(LGBM_SE handle,
SEXP num_iteration, SEXP num_iteration,
SEXP feature_importance_type, SEXP feature_importance_type,
LGBM_SE filename) { SEXP filename) {
R_API_BEGIN(); R_API_BEGIN();
CHECK_CALL(LGBM_BoosterSaveModel(R_GET_PTR(handle), 0, Rf_asInteger(num_iteration), Rf_asInteger(feature_importance_type), R_CHAR_PTR(filename))); CHECK_CALL(LGBM_BoosterSaveModel(R_GET_PTR(handle), 0, Rf_asInteger(num_iteration), Rf_asInteger(feature_importance_type), CHAR(Rf_asChar(filename))));
R_API_END(); R_API_END();
} }
......
...@@ -33,8 +33,8 @@ LIGHTGBM_C_EXPORT SEXP LGBM_GetLastError_R(); ...@@ -33,8 +33,8 @@ LIGHTGBM_C_EXPORT SEXP LGBM_GetLastError_R();
* \return 0 when succeed, -1 when failure happens * \return 0 when succeed, -1 when failure happens
*/ */
LIGHTGBM_C_EXPORT SEXP LGBM_DatasetCreateFromFile_R( LIGHTGBM_C_EXPORT SEXP LGBM_DatasetCreateFromFile_R(
LGBM_SE filename, SEXP filename,
LGBM_SE parameters, SEXP parameters,
LGBM_SE reference, LGBM_SE reference,
LGBM_SE out LGBM_SE out
); );
...@@ -59,7 +59,7 @@ LIGHTGBM_C_EXPORT SEXP LGBM_DatasetCreateFromCSC_R( ...@@ -59,7 +59,7 @@ LIGHTGBM_C_EXPORT SEXP LGBM_DatasetCreateFromCSC_R(
SEXP num_indptr, SEXP num_indptr,
SEXP nelem, SEXP nelem,
SEXP num_row, SEXP num_row,
LGBM_SE parameters, SEXP parameters,
LGBM_SE reference, LGBM_SE reference,
LGBM_SE out LGBM_SE out
); );
...@@ -78,7 +78,7 @@ LIGHTGBM_C_EXPORT SEXP LGBM_DatasetCreateFromMat_R( ...@@ -78,7 +78,7 @@ LIGHTGBM_C_EXPORT SEXP LGBM_DatasetCreateFromMat_R(
SEXP data, SEXP data,
SEXP num_row, SEXP num_row,
SEXP num_col, SEXP num_col,
LGBM_SE parameters, SEXP parameters,
LGBM_SE reference, LGBM_SE reference,
LGBM_SE out LGBM_SE out
); );
...@@ -96,7 +96,7 @@ LIGHTGBM_C_EXPORT SEXP LGBM_DatasetGetSubset_R( ...@@ -96,7 +96,7 @@ LIGHTGBM_C_EXPORT SEXP LGBM_DatasetGetSubset_R(
LGBM_SE handle, LGBM_SE handle,
SEXP used_row_indices, SEXP used_row_indices,
SEXP len_used_row_indices, SEXP len_used_row_indices,
LGBM_SE parameters, SEXP parameters,
LGBM_SE out LGBM_SE out
); );
...@@ -108,7 +108,7 @@ LIGHTGBM_C_EXPORT SEXP LGBM_DatasetGetSubset_R( ...@@ -108,7 +108,7 @@ LIGHTGBM_C_EXPORT SEXP LGBM_DatasetGetSubset_R(
*/ */
LIGHTGBM_C_EXPORT SEXP LGBM_DatasetSetFeatureNames_R( LIGHTGBM_C_EXPORT SEXP LGBM_DatasetSetFeatureNames_R(
LGBM_SE handle, LGBM_SE handle,
LGBM_SE feature_names SEXP feature_names
); );
/*! /*!
...@@ -132,7 +132,7 @@ LIGHTGBM_C_EXPORT SEXP LGBM_DatasetGetFeatureNames_R( ...@@ -132,7 +132,7 @@ LIGHTGBM_C_EXPORT SEXP LGBM_DatasetGetFeatureNames_R(
*/ */
LIGHTGBM_C_EXPORT SEXP LGBM_DatasetSaveBinary_R( LIGHTGBM_C_EXPORT SEXP LGBM_DatasetSaveBinary_R(
LGBM_SE handle, LGBM_SE handle,
LGBM_SE filename SEXP filename
); );
/*! /*!
...@@ -156,7 +156,7 @@ LIGHTGBM_C_EXPORT SEXP LGBM_DatasetFree_R( ...@@ -156,7 +156,7 @@ LIGHTGBM_C_EXPORT SEXP LGBM_DatasetFree_R(
*/ */
LIGHTGBM_C_EXPORT SEXP LGBM_DatasetSetField_R( LIGHTGBM_C_EXPORT SEXP LGBM_DatasetSetField_R(
LGBM_SE handle, LGBM_SE handle,
LGBM_SE field_name, SEXP field_name,
SEXP field_data, SEXP field_data,
SEXP num_element SEXP num_element
); );
...@@ -170,7 +170,7 @@ LIGHTGBM_C_EXPORT SEXP LGBM_DatasetSetField_R( ...@@ -170,7 +170,7 @@ LIGHTGBM_C_EXPORT SEXP LGBM_DatasetSetField_R(
*/ */
LIGHTGBM_C_EXPORT SEXP LGBM_DatasetGetFieldSize_R( LIGHTGBM_C_EXPORT SEXP LGBM_DatasetGetFieldSize_R(
LGBM_SE handle, LGBM_SE handle,
LGBM_SE field_name, SEXP field_name,
SEXP out SEXP out
); );
...@@ -183,7 +183,7 @@ LIGHTGBM_C_EXPORT SEXP LGBM_DatasetGetFieldSize_R( ...@@ -183,7 +183,7 @@ LIGHTGBM_C_EXPORT SEXP LGBM_DatasetGetFieldSize_R(
*/ */
LIGHTGBM_C_EXPORT SEXP LGBM_DatasetGetField_R( LIGHTGBM_C_EXPORT SEXP LGBM_DatasetGetField_R(
LGBM_SE handle, LGBM_SE handle,
LGBM_SE field_name, SEXP field_name,
SEXP field_data SEXP field_data
); );
...@@ -194,8 +194,8 @@ LIGHTGBM_C_EXPORT SEXP LGBM_DatasetGetField_R( ...@@ -194,8 +194,8 @@ LIGHTGBM_C_EXPORT SEXP LGBM_DatasetGetField_R(
* \return 0 when succeed, -1 when failure happens * \return 0 when succeed, -1 when failure happens
*/ */
LIGHTGBM_C_EXPORT SEXP LGBM_DatasetUpdateParamChecking_R( LIGHTGBM_C_EXPORT SEXP LGBM_DatasetUpdateParamChecking_R(
LGBM_SE old_params, SEXP old_params,
LGBM_SE new_params SEXP new_params
); );
/*! /*!
...@@ -231,7 +231,7 @@ LIGHTGBM_C_EXPORT SEXP LGBM_DatasetGetNumFeature_R( ...@@ -231,7 +231,7 @@ LIGHTGBM_C_EXPORT SEXP LGBM_DatasetGetNumFeature_R(
*/ */
LIGHTGBM_C_EXPORT SEXP LGBM_BoosterCreate_R( LIGHTGBM_C_EXPORT SEXP LGBM_BoosterCreate_R(
LGBM_SE train_data, LGBM_SE train_data,
LGBM_SE parameters, SEXP parameters,
LGBM_SE out LGBM_SE out
); );
...@@ -251,7 +251,7 @@ LIGHTGBM_C_EXPORT SEXP LGBM_BoosterFree_R( ...@@ -251,7 +251,7 @@ LIGHTGBM_C_EXPORT SEXP LGBM_BoosterFree_R(
* \return 0 when succeed, -1 when failure happens * \return 0 when succeed, -1 when failure happens
*/ */
LIGHTGBM_C_EXPORT SEXP LGBM_BoosterCreateFromModelfile_R( LIGHTGBM_C_EXPORT SEXP LGBM_BoosterCreateFromModelfile_R(
LGBM_SE filename, SEXP filename,
LGBM_SE out LGBM_SE out
); );
...@@ -262,7 +262,7 @@ LIGHTGBM_C_EXPORT SEXP LGBM_BoosterCreateFromModelfile_R( ...@@ -262,7 +262,7 @@ LIGHTGBM_C_EXPORT SEXP LGBM_BoosterCreateFromModelfile_R(
* \return 0 when succeed, -1 when failure happens * \return 0 when succeed, -1 when failure happens
*/ */
LIGHTGBM_C_EXPORT SEXP LGBM_BoosterLoadModelFromString_R( LIGHTGBM_C_EXPORT SEXP LGBM_BoosterLoadModelFromString_R(
LGBM_SE model_str, SEXP model_str,
LGBM_SE out LGBM_SE out
); );
...@@ -307,7 +307,7 @@ LIGHTGBM_C_EXPORT SEXP LGBM_BoosterResetTrainingData_R( ...@@ -307,7 +307,7 @@ LIGHTGBM_C_EXPORT SEXP LGBM_BoosterResetTrainingData_R(
*/ */
LIGHTGBM_C_EXPORT SEXP LGBM_BoosterResetParameter_R( LIGHTGBM_C_EXPORT SEXP LGBM_BoosterResetParameter_R(
LGBM_SE handle, LGBM_SE handle,
LGBM_SE parameters SEXP parameters
); );
/*! /*!
...@@ -452,15 +452,15 @@ LIGHTGBM_C_EXPORT SEXP LGBM_BoosterGetPredict_R( ...@@ -452,15 +452,15 @@ LIGHTGBM_C_EXPORT SEXP LGBM_BoosterGetPredict_R(
*/ */
LIGHTGBM_C_EXPORT SEXP LGBM_BoosterPredictForFile_R( LIGHTGBM_C_EXPORT SEXP LGBM_BoosterPredictForFile_R(
LGBM_SE handle, LGBM_SE handle,
LGBM_SE data_filename, SEXP data_filename,
SEXP data_has_header, SEXP data_has_header,
SEXP is_rawscore, SEXP is_rawscore,
SEXP is_leafidx, SEXP is_leafidx,
SEXP is_predcontrib, SEXP is_predcontrib,
SEXP start_iteration, SEXP start_iteration,
SEXP num_iteration, SEXP num_iteration,
LGBM_SE parameter, SEXP parameter,
LGBM_SE result_filename SEXP result_filename
); );
/*! /*!
...@@ -515,7 +515,7 @@ LIGHTGBM_C_EXPORT SEXP LGBM_BoosterPredictForCSC_R( ...@@ -515,7 +515,7 @@ LIGHTGBM_C_EXPORT SEXP LGBM_BoosterPredictForCSC_R(
SEXP is_predcontrib, SEXP is_predcontrib,
SEXP start_iteration, SEXP start_iteration,
SEXP num_iteration, SEXP num_iteration,
LGBM_SE parameter, SEXP parameter,
SEXP out_result SEXP out_result
); );
...@@ -544,7 +544,7 @@ LIGHTGBM_C_EXPORT SEXP LGBM_BoosterPredictForMat_R( ...@@ -544,7 +544,7 @@ LIGHTGBM_C_EXPORT SEXP LGBM_BoosterPredictForMat_R(
SEXP is_predcontrib, SEXP is_predcontrib,
SEXP start_iteration, SEXP start_iteration,
SEXP num_iteration, SEXP num_iteration,
LGBM_SE parameter, SEXP parameter,
SEXP out_result SEXP out_result
); );
...@@ -559,7 +559,7 @@ LIGHTGBM_C_EXPORT SEXP LGBM_BoosterSaveModel_R( ...@@ -559,7 +559,7 @@ LIGHTGBM_C_EXPORT SEXP LGBM_BoosterSaveModel_R(
LGBM_SE handle, LGBM_SE handle,
SEXP num_iteration, SEXP num_iteration,
SEXP feature_importance_type, SEXP feature_importance_type,
LGBM_SE filename SEXP filename
); );
/*! /*!
......
...@@ -35,8 +35,8 @@ test_that("lgb.params2str() works as expected for empty lists", { ...@@ -35,8 +35,8 @@ test_that("lgb.params2str() works as expected for empty lists", {
out_str <- lgb.params2str( out_str <- lgb.params2str(
params = list() params = list()
) )
expect_identical(class(out_str), "raw") expect_identical(class(out_str), "character")
expect_equal(out_str, lgb.c_str("")) expect_equal(out_str, "")
}) })
test_that("lgb.params2str() works as expected for a key in params with multiple different-length elements", { test_that("lgb.params2str() works as expected for a key in params with multiple different-length elements", {
...@@ -50,10 +50,9 @@ test_that("lgb.params2str() works as expected for a key in params with multiple ...@@ -50,10 +50,9 @@ test_that("lgb.params2str() works as expected for a key in params with multiple
out_str <- lgb.params2str( out_str <- lgb.params2str(
params = params params = params
) )
expect_identical(class(out_str), "raw") expect_identical(class(out_str), "character")
out_as_char <- rawToChar(out_str)
expect_identical( expect_identical(
out_as_char out_str
, "objective=magic metric=a,ab,abc,abcdefg nrounds=10 learning_rate=0.0000001" , "objective=magic metric=a,ab,abc,abcdefg nrounds=10 learning_rate=0.0000001"
) )
}) })
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment