0

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

...我如何计算欧几里德距离?我当时只需要使用一排吗?

抱歉,我是基因组数据的新手,我无法在任何地方找到此信息。

谢谢。

4

2 回答 2

2

我猜你想要做的是缺失值的 knn 插补,而不是 knn 分类。有一个现成的函数可以impute.knn从. 使用前请仔细阅读帮助文件。imputebioconductor

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)
于 2013-03-19T12:21:52.927 回答
0

谷歌搜索R k nearest neighbor将我带到knn类包中的函数。关于你的第二个问题,计算欧几里得距离很简单:

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

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

于 2013-03-19T10:01:46.890 回答