如何在R中为基因组数据执行磁盘和kNN?

时间:2013-03-19 09:27:56

标签: r knn

我有缺失值的基因组数据,我想通过使用可用值来计算每对基因的表达水平之间的距离。然后我想发现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距离?我当时只需要使用一行吗?

对不起我是基因组数据的新手,我无法在任何地方找到这些信息。

感谢。

2 个答案:

答案 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)

其中xy是您要计算其间距离的行的索引。但是,您的数据中有很多NA,我不确定您是否需要处理这个问题,因为当涉及NA时,欧几里德距离是不确定的。