我正在尝试在基因组数据集上运行DMwR包中的knnImputer。数据集有两列-一列用于染色体上的位置(数字,整数),另一列用于甲基化值(也是数字,双精度),许多甲基化值缺失。这个想法是,距离应该基于染色体上的位置。我还有其他几个功能,但我选择不包括这些功能)。然而,当我运行下面的代码行时,我得到了一个错误。
reg.knn <- knnImputation(as.matrix(testp), k=2, meth="median")
#ERROR:
#Error in rep(1, ncol(dist)) : nvalid 'times' argument有没有想过这是什么原因造成的?如果这不起作用,有没有人知道在R包中还有其他好的KNN输入器?我已经尝试了几个,但每个都返回了某种类型的错误。
发布于 2017-09-01 00:03:25
我今天收到了一个类似的错误:
rep(1,ncol(dist))中的时间错误:无效的‘
’参数
我在网上找不到解决方案,但根据一些尝试和错误,我认为问题出在no。data frame中的列数
尝试传递至少“%3”列并执行KNNimputation
我创建了一个虚拟列,它给出了观察的行数(作为第三列)。
它对我起作用了!
供您参考的示例:
示例1 -
temp <- data.frame(X = c(1,2,3,4,5,6,7,8,9,10), Y = c(T, T, F, F,F,F,NA,NA,T,T))
temp7<-NULL temp7 <-knnImputation(temp,scale=T,k=3, meth='median', distData = NULL)rep(1,ncol(dist))中出错:无效的'times‘参数
示例2 -
temp <- data.frame(X = 1:10, Y = c(T, T, F, F,F,F,NA,T,T,T), Z = c(NA,NA,7,8,9,5,11,9,9,4))
temp7<-NULL temp7 <-knnImputation(temp,scale=T,k=3, meth='median', distData = NULL) 这里传递的列数是3。没有收到任何错误!
发布于 2017-11-22 18:11:21
当我阅读代码时,我找到了问题所在,如果列小于3,那么在这个过程中,它降级到不是数据帧的东西,因此基于数据帧结构的操作都失败了,我认为作者应该处理这种情况。
是的,最后一个答案也是通过试验找到的,不同的道路,相同的答案
发布于 2021-06-07 17:53:35
今天,我遇到了同样的错误。我的df比3列大得多,所以这似乎不是(唯一的?)问题来了。
我发现有太多NAs的行导致了这个问题(在我的例子中,超过95%的给定行是NA)。过滤掉这一行就解决了问题。
带回家的信息:不仅要在列上过滤NAs (我就是这么做的),还要检查行(当然,如果您不能准确地定义什么是最近邻居,就不可能通过kNN来推断)。
如果这个包能提供一个可读的错误消息,那就更好了!
https://stackoverflow.com/questions/36239695
复制相似问题