循环模拟层次聚类R
Loop to simulate hierarchical clustering R
我使用 Vectorize
函数为 50x50 数据集的 Kolmogorov Smirnov 检验创建了一个循环,并使其在 50x50 矩阵中输出 p 值。然后将这些 p 值存储为距离对象。应用层次聚类并将其存储为树状图对象。我再重复一遍,然后找到它们之间的同义相关性。下面的代码输出一个 2x2 矩阵。
mat1 <- outer(1:50, 1:50, Vectorize(function(i,j)
{ks.boot(as.numeric(rep(seq(0,14,1),as.vector(data[i,]))),
as.numeric(rep(seq(0,14,1),as.vector(data[j,]))),nboots=100)
$ks.boot.pvalue}))
rownames(mat) <- data2[, 1]
d1=as.dist(as.matrix(1-mat))
hcr1 <- hclust(d,method = "complete")
dend1 <- as.dendrogram(hcr)
mat2 <- outer(1:50, 1:50, Vectorize(function(i,j)
{ks.boot(as.numeric(rep(seq(0,14,1),as.vector(data[i,]))),
as.numeric(rep(seq(0,14,1),as.vector(data[j,]))),nboots=100)
$ks.boot.pvalue}))
rownames(mat) <- data2[, 1]
d2=as.dist(as.matrix(1-mat))
hcr2 <- hclust(d,method = "complete")
dend2 <- as.dendrogram(hcr)
dendy <- dendlist(dend1,dend2)
cor <- cor.dendlist(dendy1)
cor1
所以我要的是一个for循环来模拟获得dend1,dend2,....,dend100。将其存储到
dendy <- dendlist(dend1,dend2,...,dend100)
如果您只想要一个包含 100 个的列表 dend
,请将相关代码包装在不带参数的自定义函数中,然后 lapply
100 次:
FOO <- function(...){
mat1 <- outer(1:50, 1:50, Vectorize(function(i,j)
{ks.boot(as.numeric(rep(seq(0,14,1),as.vector(data[i,]))),
as.numeric(rep(seq(0,14,1),as.vector(data[j,]))),nboots=100)
$ks.boot.pvalue}))
rownames(mat) <- data2[, 1]
d1=as.dist(as.matrix(1-mat))
hcr <- hclust(d,method = "complete")
as.dendrogram(hcr)
}
dendy <- lapply(1:100, FOO)
我使用 Vectorize
函数为 50x50 数据集的 Kolmogorov Smirnov 检验创建了一个循环,并使其在 50x50 矩阵中输出 p 值。然后将这些 p 值存储为距离对象。应用层次聚类并将其存储为树状图对象。我再重复一遍,然后找到它们之间的同义相关性。下面的代码输出一个 2x2 矩阵。
mat1 <- outer(1:50, 1:50, Vectorize(function(i,j)
{ks.boot(as.numeric(rep(seq(0,14,1),as.vector(data[i,]))),
as.numeric(rep(seq(0,14,1),as.vector(data[j,]))),nboots=100)
$ks.boot.pvalue}))
rownames(mat) <- data2[, 1]
d1=as.dist(as.matrix(1-mat))
hcr1 <- hclust(d,method = "complete")
dend1 <- as.dendrogram(hcr)
mat2 <- outer(1:50, 1:50, Vectorize(function(i,j)
{ks.boot(as.numeric(rep(seq(0,14,1),as.vector(data[i,]))),
as.numeric(rep(seq(0,14,1),as.vector(data[j,]))),nboots=100)
$ks.boot.pvalue}))
rownames(mat) <- data2[, 1]
d2=as.dist(as.matrix(1-mat))
hcr2 <- hclust(d,method = "complete")
dend2 <- as.dendrogram(hcr)
dendy <- dendlist(dend1,dend2)
cor <- cor.dendlist(dendy1)
cor1
所以我要的是一个for循环来模拟获得dend1,dend2,....,dend100。将其存储到
dendy <- dendlist(dend1,dend2,...,dend100)
如果您只想要一个包含 100 个的列表 dend
,请将相关代码包装在不带参数的自定义函数中,然后 lapply
100 次:
FOO <- function(...){
mat1 <- outer(1:50, 1:50, Vectorize(function(i,j)
{ks.boot(as.numeric(rep(seq(0,14,1),as.vector(data[i,]))),
as.numeric(rep(seq(0,14,1),as.vector(data[j,]))),nboots=100)
$ks.boot.pvalue}))
rownames(mat) <- data2[, 1]
d1=as.dist(as.matrix(1-mat))
hcr <- hclust(d,method = "complete")
as.dendrogram(hcr)
}
dendy <- lapply(1:100, FOO)