在使用xgboost模型之前,需要将数据进行one hot encoding,按照教程输入以下代码:
train_matrix <- sparse.model.matrix(outcome ~ .-1, train)
R语言一直报错:
Error in model.spmatrix(t, data, transpose = transpose, drop.unused.levels = drop.unused.levels, :
fnames == names(mf) are not all TRUE
查了stackoverflow, 报错的基本原因是因为列名中有不兼容的字符。仔细检查发现dataframe的列名确实有空格存在,使用gsub将空格替换成"_":
genustable$Genus <- gsub(" ", "_", genustable$Genus)
成功解决问题!