2014-01-14 4 views
0

Я пытаюсь получить несколько участков с LDA классификатора я обученным по некоторым данным, но я получаю странное сообщение об ошибке:загадочный LDA черчение ошибка

> plot(CSP.reduced.LDA) 
Error in terms.formula(formula, data = data) : 
    duplicated name 'CSP.1' in data frame using '.' 

Я не уверен, что будет минимальный рабочий пример для этого, но я могу дать краткое описание данных:

> summary(CSP.by.trial[[subject.ind]]) 
    CSP.1   CSP.2   CSP.3   CSP.4  targets 
Min. :1.206 Min. :1.780 Min. :0.0864 Min. :2.714 0:140 
1st Qu.:1.407 1st Qu.:3.398 1st Qu.:0.2300 1st Qu.:3.205 1:140 
Median :1.470 Median :3.784 Median :0.3044 Median :3.428   
Mean :1.477 Mean :3.804 Mean :0.3247 Mean :3.500   
3rd Qu.:1.546 3rd Qu.:4.218 3rd Qu.:0.3986 3rd Qu.:3.723   
Max. :1.762 Max. :5.454 Max. :0.9466 Max. :5.142 


> CSP.reduced.LDA$terms 
CSP.by.trial$targets ~ CSP.1 + CSP.2 + CSP.3 + CSP.4 
attr(,"variables") 
list(CSP.by.trial$targets, CSP.1, CSP.2, CSP.3, CSP.4) 
attr(,"factors") 
        CSP.1 CSP.2 CSP.3 CSP.4 
CSP.by.trial$targets  0  0  0  0 
CSP.1     1  0  0  0 
CSP.2     0  1  0  0 
CSP.3     0  0  1  0 
CSP.4     0  0  0  1 
attr(,"term.labels") 
[1] "CSP.1" "CSP.2" "CSP.3" "CSP.4" 
attr(,"order") 
[1] 1 1 1 1 
attr(,"intercept") 
[1] 1 
attr(,"response") 
[1] 1 
attr(,".Environment") 
<environment: R_GlobalEnv> 
attr(,"predvars") 
list(CSP.by.trial$targets, CSP.1, CSP.2, CSP.3, CSP.4) 
attr(,"dataClasses") 
CSP.by.trial$targets    CSP.1    CSP.2 
      "factor"   "numeric"   "numeric" 
       CSP.3    CSP.4 
      "numeric"   "numeric" 

ответ

0

Подождите, у меня есть. Он выглядит как plot.lda() от дросселей пакета MASS на . s в именах столбцов. Заменив их символом пробела, он зафиксировал его. Не знаю, почему это не сломает lda() для начала.

+0

Между тем, использование разделителя пробелов разбивает поэтапный LDA из пакета 'klaR' ... –

+1

Вы не хотите места в именах столбцов. Такие имена не являются синтаксически действительными и часто нуждаются в особом лечении. Если 'plot.lda()' действительно не нравится '.' (я бы подумал об ошибке), попробуйте использовать' _' или ничего. – Roland

+0

Я понял, как много, поэтому я сбросил пробелы. Кажется странным, что 'paste' будет по умолчанию' sep = "" ', хотя в свете всего этого (я использую его для обозначения столбцов с последовательностями). –

Смежные вопросы