首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >来自DMwR包的时间错误:无效的‘knnImputer’参数

来自DMwR包的时间错误:无效的‘knnImputer’参数
EN

Stack Overflow用户
提问于 2016-03-27 03:12:44
回答 3查看 3.3K关注 0票数 3

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

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

有没有想过这是什么原因造成的?如果这不起作用,有没有人知道在R包中还有其他好的KNN输入器?我已经尝试了几个,但每个都返回了某种类型的错误。

EN

回答 3

Stack Overflow用户

发布于 2017-09-01 00:03:25

我今天收到了一个类似的错误:

rep(1,ncol(dist))中的时间错误:无效的‘

’参数

我在网上找不到解决方案,但根据一些尝试和错误,我认为问题出在no。data frame中的列数

尝试传递至少“%3”列并执行KNNimputation

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

它对我起作用了!

供您参考的示例:

示例1 -

代码语言:javascript
复制
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 -

代码语言:javascript
复制
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
EN

Stack Overflow用户

发布于 2017-11-22 18:11:21

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

是的,最后一个答案也是通过试验找到的,不同的道路,相同的答案

票数 0
EN

Stack Overflow用户

发布于 2021-06-07 17:53:35

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

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

带回家的信息:不仅要在列上过滤NAs (我就是这么做的),还要检查行(当然,如果您不能准确地定义什么是最近邻居,就不可能通过kNN来推断)。

如果这个包能提供一个可读的错误消息,那就更好了!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36239695

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档