我有缺失值的基因组数据,我想通过使用可用值来计算每对基因的表达水平之间的距离。然后我想发现K最近邻居填补空白?我怎么能在R中做到这一点?
gene sample 1 sample 2 sample 3 sample 4
1 5555 NA 2151 5484
2 5564 NA NA NA
3 4544 4656 14546 45455
4 NA 54654 NA NA
... 我如何计算eucledian距离?我当时只需要使用一行吗?
对不起我是基因组数据的新手,我无法在任何地方找到这些信息。
感谢。
答案 0 :(得分:2)
我想你要做的是对缺失值进行克服,而不是knn-classification。 impute.knn
上的impute
包中有一个名为bioconductor
的现成函数。使用前请仔细阅读帮助文件。
source("http://bioconductor.org/biocLite.R")
biocLite("impute")
require(impute)
x <- rnorm(1000, 50, 5) # 1000 random samples
x[sample(1:1000, 50)] <- NA # 50 are randomly made NA
x <- matrix(x, nrow = 10) # make a matrix
impute.knn(x)
答案 1 :(得分:0)
Google R k nearest neighbor
的Google搜索引导我进入课程包中的knn
函数。关于你的第二个问题,计算欧几里德距离只是:
sqrt((sample1_x - sample1_y)^2 + ... + (sample4_x - sample4_y)^2)
其中x
和y
是您要计算其间距离的行的索引。但是,您的数据中有很多NA,我不确定您是否需要处理这个问题,因为当涉及NA时,欧几里德距离是不确定的。