如何在R中形成dist和kNN以获取基因组数据?

如何在R中形成dist和kNN以获取基因组数据?,r,knn,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

我有缺失值的基因组数据,我想用可用值计算每对基因表达水平之间的距离。然后我想找出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
。。。 如何计算欧氏距离?我需要一次只使用一行吗

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


谢谢。

通过谷歌搜索
R k最近邻
可以找到类包中的
knn
函数。关于你的第二个问题,计算欧几里得距离很简单:

sqrt((sample1_x - sample1_y)^2 + ... + (sample4_x - sample4_y)^2)

其中
x
y
是要计算行之间距离的行的索引。然而,你的数据中有很多NA,我不确定你需要如何处理,因为当涉及NA时,欧几里德距离是未定义的。

我猜你想做的是对缺失值进行knn插补,而不是knn分类。在
bioconductor
上的
impute
软件包中,有一个现成的函数称为
impute.knn
。使用前仔细阅读帮助文件

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)
源代码(“http://bioconductor.org/biocLite.R")
生物岩(“输入”)
要求(估算)
x