我不确定为什么会收到此错误,我正在尝试使用knn运行交叉验证。
我就是这样
knn.cv(trainingDigit,label,k=1)
我的trainingDigit包括
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
在两个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))
关于r - 'sort.list'的'x'必须是原子的。您是否在列表中调用了 'sort'?与knn.cv,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35687354/