'x' 对于 'sort.list' 必须是原子的 您是否在列表中调用了 'sort'? knn.cv

'x' must be atomic for 'sort.list' Have you called 'sort' on a list? with 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 ...

在 trainingDigit 中标记 eas 列表.. 但是当我 运行 它时我得到这个错误

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

我不确定我是否理解为什么以及它的意思。有人可以解释一下它的意思吗?我需要做些什么来修复它?

我们可以用Map对两个list对应的元素应用knn.cv函数。

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

我们也可以使用 MoreArgs 参数并删除匿名函数调用。

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