循环模拟层次聚类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)