答案如下:
#找到特征所在的位置
getColNumber<-function(data,colname="Class"){
CN <- colnames(data)
for (i in 1:ncol(data)){
if (CN[i] == colname) {
return (i)
}
}
return (FALSE)
}
#将特征列移到最末
moveColToEnd<-function(data,colname="Class"){
colNumber <- getColNumber(data,colname)
data <- data[,c(1:(colNumber-1),(colNumber+1):ncol(data),colNumber)]
return (data)
}
#调换两列特征的顺序
switchCol<-function(data,col1name,col2name){
col1Number <- getColNumber(data,col1name)
col2Number <- getColNumber(data,col2name)
positionEnd = ncol(data)
if (col2Number < col1Number) {
tmp <- col1Number
col1Number <- col2Number
col2Number <- tmp
}
positionBeforCol1 <- col1Number -1
positionAfterCol1 <- col1Number +1
positionBeforCol2 <- col2Number -1
positionAfterCol2 <- col2Number +1
newOrder = c()
if (positionAfterCol2 > ncol(data)){
positionAfterCol2 = ncol(data)
newOrder <- c(1:positionBeforCol1,col2Number,positionAfterCol1:positionBeforCol2,col1Number)
} else {
newOrder <- c(1:positionBeforCol1,col2Number,positionAfterCol1:positionBeforCol2,col1Number,positionAfterCol2:positionEnd)
}
dataNew <- data[,newOrder]
return (dataNew)
}
|