为什么会出现这种错误“数据框中的重复名称使用'。'?

时间:2018-05-05 17:34:12

标签: r dataframe rowname

我有一个包含30行和850列(功能)的数据框。 当我想使用带有插入符号和e1071包的svm或其他分类器时,我遇到了这个错误!

Error in terms.formula(formula, data = data) : 
  duplicated name 'X10Percentile' in data frame using '.'
即使我想使用 Boruta 等特征选择方法,我也面临同样的错误。 我仔细检查我的功能,什么也没发现。我以为我必须在数据框中使用相同的列名,因此我创建了一个示例数据并检查如下:

test<-data.frame("w1"=c(1:6),"w1.1"=c(2:7),"w1"=c(3:8), "ta"=c("T","F","T","F","F","T"))

set.seed(100)
train <- createDataPartition(y=test$ta,p=0.6,list = FALSE)
TrainSet <- test[train,]
TestSet <- test[-train,]

trcontrol_rcv<- trainControl(method="cv", number=10) 

 svm_test<-svm(ta ~., data=TrainSet,trControl=trcontrol_rcv)

效果很好,不会出现错误。 正如我所看到的,当测试数据甚至具有完全相同的colname时,不会发生错误。 我想知道为什么这个错误“在条款错误。公式(公式,数据=数据):   数据框中使用“。”重复名称'X10Percentile'“发生在我的数据中,如何消除它? 提前谢谢。

2 个答案:

答案 0 :(得分:0)

谢谢大家。幸运的是,我发现了这个错误的原因。 因为R认为变量是因素。因此它生成数据。框架(实际上是一个列表)。为了解决这个问题,我按照以下方式将其转换为数据数据;

&#13;
&#13;
test1<-sapply(test,function(x) as.numeric(as.character(x)))
&#13;
&#13;
&#13;

答案 1 :(得分:0)

对于我这不是解决方案,我有一个LargeMatrix作为仅包含数字类型向量的对象。

问题是某些dimnames(MyLargeMatrix)被复制了。我更改了它们,错误消失了。