来自DMwR包的knnImputer出错:无效的'times'参数

时间:2016-03-26 19:12:44

标签: r

我正在尝试从基因组数据集上的DMwR包运行knnImputer。数据集有两列 - 一列用于染色体上的位置(数字,整数),另一列用于甲基化值(也是数字,双精度),其中许多甲基化值缺失。这个想法是距离应该基于染色体中的位置。我还有其他几个功能,但选择不包括那些)。但是,当我运行以下行时,我收到错误。

reg.knn <- knnImputation(as.matrix(testp), k=2, meth="median")
#ERROR:
#Error in rep(1, ncol(dist)) : nvalid 'times' argument

有关可能导致此问题的任何想法? 如果这不起作用,是否有人知道R包装中其他任何好的KNN Imputers?我一直在尝试几种,但每种都会返回某种错误。

3 个答案:

答案 0 :(得分:0)

我今天也遇到了类似的错误:

  

rep(1,ncol(dist))出错:无效的'times'参数

我无法在线找到解决方案,但有一些线索和错误,我认为问题是否。数据框中的列

  

尝试至少传递'3'列并进行KNNimputation

我创建了一个虚拟列,它给出了观察的ROW计数(作为第三列)。

它对我有用!

您的参考示例:

示例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.没有收到任何错误!

答案 1 :(得分:0)

当我读入代码时,我找到了问题,如果列小于3,那么在这个过程中它降级到不是数据帧的东西,因此基于数据帧结构的操作都失败了,我认为作者应该处理这个案子。

是的,最后的答案也是通过审判,不同的道路,同样的答案找到它

答案 2 :(得分:0)

今天,我遇到了同样的错误。我的 df 比 3 列大得多,所以这似乎不是(唯一的?)问题。

我发现 NA 过多的行导致了问题(在我的例子中,给定行的 95% 以上是 NA)。过滤掉这一行解决了问题。

带回家的信息:不仅要过滤列上的 NA(我这样做了),还要检查行(如果您无法定义最近邻的确切含义,当然不可能通过 kNN 进行估算)。

如果包能提供可读的错误信息就好了!