«x» должен быть атомарным для «sort.list». Вы вызывали «sort» в списке? с knn.cv

Я не уверен, почему я получаю эту ошибку, я пытаюсь запустить перекрестную проверку с помощью knn..

что я делаю как таковой

knn.cv(trainingDigit,label,k=1)

Моя тренировочная цифра состоит из

str(trainingDigit)
    List of 10
     $ : num [1:400, 1:324] 1 1 0.969 1 0.992 ...
     $ : num [1:400, 1:324] 1 1 1 1 0.831 ...
     $ : num [1:400, 1:324] 1 1 0.98 1 0.996 ...
     $ : num [1:400, 1:324] 1 1 1 1 1 ...
     $ : num [1:400, 1:324] 0.992 1 1 1 1 ...
     $ : num [1:400, 1:324] 0.961 1 1 1 1 ...
     $ : num [1:400, 1:324] 1 0.957 0.961 0.973 0.988 ...
     $ : num [1:400, 1:324] 1 1 1 1 0.937 ...
     $ : num [1:400, 1:324] 1 0.949 0.988 1 1 ...
     $ : num [1:400, 1:324] 1 1 1 0.984 1 ...

В основном просто данные... и метка содержит

str(label)
List of 10
     $ : num [1:400] 0 0 0 0 0 0 0 0 0 0 ...
     $ : num [1:400] 1 1 1 1 1 1 1 1 1 1 ...
     $ : num [1:401] 2 2 2 2 2 2 2 2 2 2 ...
     $ : num [1:400] 3 3 3 3 3 3 3 3 3 3 ...
     $ : num [1:400] 4 4 4 4 4 4 4 4 4 4 ...
     $ : num [1:400] 5 5 5 5 5 5 5 5 5 5 ...
     $ : num [1:400] 6 6 6 6 6 6 6 6 6 6 ...
     $ : num [1:400] 7 7 7 7 7 7 7 7 7 7 ...
     $ : num [1:400] 8 8 8 8 8 8 8 8 8 8 ...
     $ : num [1:400] 9 9 9 9 9 9 9 9 9 9 ...

Маркировка списка eas в trainingDigit. Но когда я запускаю его, я получаю эту ошибку

'x' must be atomic for 'sort.list'
Have you called 'sort' on a list?

Я не уверен, что понимаю, почему и что это значит. Может кто-нибудь пояснить, что это значит? что я должен сделать, чтобы исправить это?


person Community    schedule 28.02.2016    source источник
comment
получаю сообщение об ошибке error in match.fun(FUN) : object 'knn.cv' could not be found.   -  person    schedule 28.02.2016
comment
хотя спасибо за быстрый ответ :)   -  person    schedule 28.02.2016
comment
Я не уверен .. куда вы направляетесь. какова цель lapply? для чего мне его использовать?   -  person    schedule 28.02.2016
comment
Я не уверен, чего не хватает, чтобы сделать его воспроизводимым. Я не буду публиковать все элементы данных, так как он просто будет содержать много данных.   -  person    schedule 28.02.2016
comment
ооо.. вы добавили cl, которого не было в первом посте   -  person    schedule 28.02.2016
comment
добавляя cl, я получаю эту ошибку ошибки в FUN(X[[i]], ...): «поезд» и «класс» имеют разную длину   -  person    schedule 28.02.2016
comment
но... > length(label) [1] 10 > length(trainingDigit) [1] 10   -  person    schedule 28.02.2016
comment
Итак, label также является list   -  person akrun    schedule 28.02.2016
comment
да.. список списков..   -  person    schedule 28.02.2016
comment
3-й элемент в label имеет 401 элемент.   -  person akrun    schedule 28.02.2016
comment
Блин.. Я вообще этого не заметил.. Теперь карта работает   -  person    schedule 28.02.2016


Ответы (1)


Мы можем использовать Map для применения функции knn.cv к соответствующим элементам двух list.

Map(function(x,y) knn.cv(x, y, k=1), trainingDigit, label)

Мы также можем использовать аргумент MoreArgs и удалить анонимный вызов функции.

Map(knn.cv, trainingDigit, label, MoreArgs = list(k=1, prob=TRUE))
person akrun    schedule 28.02.2016