2013-03-20 2 views
0

У меня есть матрица в R, и без необходимости цикла for я хотел бы случайным образом перетасовать строки, но для каждого столбца самостоятельно.Смешать столбцы матрицы независимо от использования apply или plyr

Т.е

A=cbind(c(1,2,3),c(4,5,6)) 

, и я хотел бы иметь новую матрицу, скажем A.shuffle, где столбец 1 с (1,2,3) и столбец 2 с (4,5, 6), случайным образом перетасовываются независимо.

Например,

A.shuffle = cbind(c(1,3,2), c(6,4,5)) 

т.е., в колонке 1 случайная перетасовка изменил положение 2 и 3, и в колонке 2 другая случайная перетасовка изменил положение 6 до 4, от 4 до 5 и 5 до 6.

Что было бы хорошим способом сделать это в R без необходимости делать для циклов?

Спасибо!

+1

'применяются (A, 2, образец)' ' – Ista

ответ

8

Как насчет этого?

> apply(A, 2, sample) 
+0

применить (A, 2, образец)' работает так же хорошо и имеет преимущество быть короче. – Ista