如何在R中形成dist和kNN以获取基因组数据?
我有缺失值的基因组数据,我想用可用值计算每对基因表达水平之间的距离。然后我想找出K个最近的邻居来填补空白?我怎么能在R里做到如何在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
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