DMwR包中的knnImputer出现错误:'times'参数无效。

4

我正在尝试在DMwR包中运行knnImputer,用于基因组数据集。该数据集有两列 - 一个是染色体上的位置(数字,整数),另一个是甲基化值(也是数字,双精度浮点数),其中许多甲基化值缺失。想法是距离应该基于染色体上的位置。我还有几个其他特征,但选择不包括它们。然而,当我运行以下代码时,我会得到一个错误。

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

有什么想法是什么导致了这个问题吗? 如果这不起作用,有人知道其他好的KNN Imputers R包吗?我已经尝试了几个,但每个都返回某种错误。

3个回答

2
今天我遇到了一个类似的错误:
“Error in rep(1, ncol(dist)) : invalid 'times' argument”
我在网上找不到解决方法,但是通过一些尝试和错误,我认为问题出在数据框中的列数。
请尝试至少传递“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。没有出现任何错误!


2
今天,我遇到了相同的错误。我的数据框比3列要大得多,所以这似乎不是唯一的问题?我发现有太多NAs的行导致了问题(在我的情况下,给定行中超过95%的值都是NA)。过滤掉这些行解决了问题。重点是:不仅要针对列过滤NAs(我做了),还要检查行(如果您无法定义最近的邻居,则当然无法通过kNN进行插补)。如果该软件包能提供可读的错误消息就好了!

0
当我阅读代码时,我找到了问题。如果列小于3,则在处理过程中它会降级为不是数据框架的东西,因此基于数据框架结构的所有操作都会失败。我认为作者应该处理这种情况。
是的,最后一个答案也是通过尝试找到的,不同的方法,相同的答案。

我可能不能帮助问题的提出者,但希望其他人能看到这个答案可以节省很多时间。 - cloudscomputes

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接