2012-04-16 51 views
1

如何使用R替换置换矩阵的列?我发现了一个名为rmperm {sna}的函数,但它可以对列和行进行置换,而我只是想对列进行置换。使用替换和聚类来置换矩阵的列

编辑: 我必须排列矩阵1000次,然后做层次聚类,所以我有1000个随机化后的最终树。

非常感谢。

回答

1

尝试sample()函数。

> m <- matrix(as.integer(runif(9,0,9)),ncol=3) 
> m 
    [,1] [,2] [,3] 
[1,] 5 0 5 
[2,] 6 0 0 
[3,] 2 1 3 
> permuted <- m[,sample(ncol(m), 10, replace=TRUE)] 
> permuted 
    [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] 
[1,] 5 0 5 5 5 5 0 5 5  5 
[2,] 0 0 0 0 6 0 0 0 6  0 
[3,] 3 1 3 3 2 3 1 3 2  3 

的第一个参数sample()指定样品(1:x)的范围内,所述第二参数指定的项数来选择(size),并且replace参数指定我们是否要使用替换(如果size> x,则需要)。

+0

谢谢你的回答。我必须对矩阵进行1000次置换,然后进行层次聚类,以便在1000次随机化之后得到最终的树。这很好地排列了我的矩阵,但是如果我放置一个循环并在其中进行排列,然后在循环内进行排序。我应该在循环外面绘制聚类结果吗?谢谢! – DianaHelen 2012-04-16 15:32:54

+0

当然。您可能希望在循环之前定义一些变量,在该循环中存储结果,然后在循环完成后合并/绘制它们。 – 2012-04-16 17:53:44

+0

这是我迷路的地方。 (我在1:1000中) 排列< - test2_matrix [,sample(ncol(test2_matrix),12,replace = TRUE)] d = dist(置换,method =“euclidean”,diag = FALSE,upper = FALSE,p = 2) } png(filename =“cluster_dendrogram_bootstrap.png”,width = 1024,height = 1024,pointsize = 10) plot(clust)' – DianaHelen 2012-04-16 18:00:35