如果通过 source 命令调用以下代码,则效果很好。它是函数的一部分,其中xgb.metric.label
是一个形式参数,在运行时可以使用"rmsle"
. bst.cv
是一个data.table
。
lab = paste('test.',xgb.metric.label,'.mean',sep='')
bst.cv = xgboost::xgb.cv(param=param, data = data, label = y,
nfold = nfold, nrounds=cv.nround , folds = foldList,
feval = xgb.metric.fun , maximize = xgb.maximize, verbose=FALSE)
if (verbose) print(bst.cv)
early.stop = which(bst.cv[,get(lab)] == bst.cv[,min(get(lab))] )
相反,当我调用这样的代码时,R CMD check R-package --as-cran
我得到了以下错误Error in get(lab) : object 'test.rmsle.mean' not found
。但是从标准输出中我可以看到完全test.rmsle.mean
存在。
>> xgb: cross-validation ...
train.rmsle.mean train.rmsle.std test.rmsle.mean test.rmsle.std
1: 1.982000 0.047535 1.971343 0.257277
2: 1.957587 0.047260 1.947059 0.255464
3: 1.933816 0.046985 1.923421 0.253643
4: 1.910654 0.046711 1.900397 0.251813
5: 1.888074 0.046436 1.877959 0.249975
---
2996: 0.267519 0.072264 0.307539 0.239068
2997: 0.267531 0.072254 0.307413 0.239195
2998: 0.267425 0.072160 0.307183 0.239163
2999: 0.267488 0.072168 0.307137 0.239798
3000: 0.267476 0.072201 0.307264 0.239906
我试图在错误之前调用所有相关库,但没有成功。
library(data.table)
library(xgboost)
library(methods)
我还在DESCRIPTION
文件的导入部分添加了这些库。再次,没有成功。
Imports:
parallel,
subselect,
plyr,
xgboost,
methods,
data.table