【发布时间】:2017-04-19 12:27:50
【问题描述】:
我正在尝试编写一个函数来更改数据集中变量的类,以匹配其他数据集的列的类。
例如,如果我有一个数据集 1,其中包含名为 A 的列作为类因子,而数据集 2 的列名为 A 且具有类字符,我想更改数据集中 A 列的类2 因素。
我有一个代码,但我不明白为什么,它无法更改类。你有什么想法吗?
change_class2=function(predict_set,train_set){
col_drop=c()
for(column in colnames(predict_set)){
if(!column %in% colnames(train_set))
{col_drop=c(col_drop,column)}
v=grep(column, colnames(predict_set))
w=grep(column, colnames(train_set))
if((class(predict_set[,v])!=class(train_set[,w]))*(is.factor(train_set[,w]))==1){
predict_set[,v]=factor(predict_set[,v])}
else if((class(predict_set[,v])!=class(train_set[,w]))*(is.character(train_set[,w]))==1){
predict_set[,v]=as.character(predict_set[,v])}
else if((class(predict_set[,v])!=class(train_set[,w]))*(is.numeric(train_set[,w]))==1){
predict_set[,v]=as.numeric(predict_set[,v])}
else if((class(predict_set[,v])!=class(train_set[,w]))*(is.integer(train_set[,w]))==1){
predict_set[,v]=as.integer(predict_set[,v])}
else{
predict_set[,v]=predict_set[,v]}
} }
【问题讨论】: