Почему эта ошибка происходит "дублирующееся имя во фрейме данных с использованием '.'? - PullRequest
0 голосов
/ 05 мая 2018

У меня есть фрейм данных с 30 строками и 850 столбцами (функции). когда я хочу использовать svm или другой классификатор с пакетами caret и e1071, я сталкиваюсь с этой ошибкой!

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)

Работает хорошо, ошибки не возникает. Как я вижу, ошибки не возникает, когда у тестовых данных есть даже одно и то же имя. Я хочу знать, почему эта ошибка "Ошибка в term.formula (формула, данные = данные): Дублированное имя «X10Percentile» во фрейме данных с использованием «.» встречается для моих данных, и как я могу его устранить? Заранее спасибо.

1 Ответ

0 голосов
/ 06 мая 2018

Спасибо всем. К счастью, я нашел причину этой ошибки. Потому что R рассматривает переменные как факторы. Поэтому это делает данные. кадр (который фактически является списком). Чтобы решить эту проблему, я преобразовал его в числовые данные следующим образом:

test1<-sapply(test,function(x) as.numeric(as.character(x)))
...