2015-08-07 3 views
2

Я пытаюсь применить тест Wilcoxon. В основном я читаю данные и этикетки из CSV-файлов, как показано в следующем коде:Ошибка при использовании данных теста Wilcoxon

fmeasures <- read.csv(file="fmeasures.txt",head=FALSE,sep=",") 
labels <- read.csv(file="labels.txt",head=FALSE,sep=",") 

Тогда я применить тест Вилкоксона с помощью следующей строки

pairwise.wilcox.test(fmeasures, labels, p.adj = "bonf", paired= TRUE) 

И у меня есть следующее сообщение об ошибке:

Error in sort.list(y) : 'x' must be atomic for 'sort.list' 
Have you called 'sort' on a list? 
Calls: pairwise.wilcox.test -> factor -> as.factor -> factor -> sort.list 
Execution halted 

Кстати, ярлыки представляют собой массив строк.

Файл метка here и файл fmeasure является here

Что происходит? Как я могу это решить?

+1

Не могли бы вы поделиться своими данными? – erasmortg

+0

@erasmortg вы можете увидеть мое обновление? – mad

+1

Получаете ли вы какие-либо предупреждающие сообщения при чтении 'labels.txt'? Вы изменили формат ярлыков? Читая его так, вы получаете data.frame, когда вам, вероятно, нужен вектор – erasmortg

ответ

1

Проблема в том, что, прочитав labels.txt, вы получите data.frame с 170 колонками. Попробуйте вместо этого:

pairwise.wilcox.test(fmeasures, unlist(labels), p.adj = "bonf", paired= TRUE) 

Вы можете видеть, что str(unlist(labels)) является фактором 17 уровней:

#Factor w/ 17 levels "dct","hierarch_sift",..: 1 1 1 1 1 1 1 1 1 1 ... 
#- attr(*, "names")= chr [1:170] "V1" "V2" "V3" "V4" ... 

Edit:

Для полноты fmeasures нужно преобразовать в числовой вектор, поскольку исходный вызов read.csv() дает тот же результат, что и у labels.txt (a data.frame с 170 колонками). Таким образом, комплексное решение:

pairwise.wilcox.test(as.numeric(fmeasures), unlist(labels), p.adj = "bonf", paired= TRUE) 
+0

Теперь у меня есть эта ошибка: Ошибка в wilcox.test.default (xi, xj, парная = спаренная, ...): 'x' должно быть числовым Звонки : pairwise.wilcox.test ... compare.levels -> wilcox.test -> wilcox.test.default. Моя переменная fmeasures не является числовой? – mad

+1

try 'as.numeric (fmeasures)' – erasmortg

+0

Это сработало, еще один вопрос. Здесь таблица должна быть 17x17, почему она 16x16? – mad

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