2012-04-16 2 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 определяет, хотите ли мы использовать замену (требуется, если размер> x).

+0

Благодарим вас за ответ. Я должен переставить матрицу 1000 раз, а затем выполнить иерархическую кластеризацию, поэтому у меня есть окончательное дерево после 1000 рандомизаций. Это отлично меняет мою матрицу, но если я положу цикл и сделаю перестановку в нем, а затем в цикле кластеризацию. Должен ли я отображать результаты кластеризации вне цикла? Благодаря! – DianaHelen

+0

Несомненно. Вероятно, вы захотите определить некоторую переменную перед циклом, в котором вы сохраните результаты, а затем слейте/запишите их после завершения цикла. –

+0

Здесь я потерялся. У меня есть этот цикл для (i в 1: 1000) { перестановленный <- test2_matrix [, sample (ncol (test2_matrix), 12, replace = TRUE)] d = dist (перестановочный, метод = "евклидовой", diag = FALSE, upper = FALSE, p = 2) clust = hclust (d, method = "complete", members = NULL) } png (filename = "cluster_dendrogram_bootstrap.png", width = 1024, height = 1024, pointize = 10) plot (clust) ' – DianaHelen