ola*_*ala 5 r cluster-analysis
我试图在某些特征(基因)上绘制一些样本(其中的40个)的分层聚类,并且我有一个大表,该表具有50万行和41列(第一个是名称),当我尝试
d<-dist(as.matrix(file),method="euclidean")
Run Code Online (Sandbox Code Playgroud)
我得到这个错误
Error: cannot allocate vector of size 1101.1 Gb
Run Code Online (Sandbox Code Playgroud)
我如何解决这个限制?我用谷歌搜索并遇到了R中的ff包,但是我不太明白这是否可以解决我的问题。
谢谢!
一般来说,层次聚类并不是处理非常大的数据集的最佳方法。
然而,就您而言,存在不同的问题。如果你想对样本进行聚类,那么你的数据结构是错误的。观察结果应表示为行,基因表达(或任何类型的数据)表示为列。
假设您有这样的数据:
data <- as.data.frame(matrix(rnorm(n=500000*40), ncol=40))
Run Code Online (Sandbox Code Playgroud)
你想做的是:
# Create transposed data matrix
data.matrix.t <- t(as.matrix(data))
# Create distance matrix
dists <- dist(data.matrix.t)
# Clustering
hcl <- hclust(dists)
# Plot
plot(hcl)
Run Code Online (Sandbox Code Playgroud)
笔记
您应该记住,当您处理高维数据时,欧几里德距离可能会产生相当大的误导。
归档时间: |
|
查看次数: |
6385 次 |
最近记录: |