回答
這將是一個很大更快地做到這一點的一個矩陣:
dm <- matrix(1:25, ncol = 5); dm
dm[] <- sample(dm); dm
編輯:這是錯誤的:「我敢肯定,第一個置換的列,然後在列應該 給出與排列整個矢量相同的結果,然後重新定形到原始尺寸。「 < \ S>
的「辛普森方法」將得到不同的結果,可能是被什麼要求(但它會更快了矩陣測試平臺,如果這是作爲一個仿真努力的一部分來完成):
dm <- dm[ sample(nrow(dm)), sample(ncol(dm)) ]
只需使用sample()
分別對行數和列數進行索引,結果來自sample()
。
df <- data.frame(matrix(1:25, ncol = 5))
permDF <- function(x) {
nr <- nrow(x)
nc <- ncol(x)
x[sample(nr), sample(nc)]
}
> permDF(df)
X3 X4 X2 X1 X5
4 14 19 9 4 24
5 15 20 10 5 25
1 11 16 6 1 21
3 13 18 8 3 23
2 12 17 7 2 22
> permDF(df)
X1 X2 X4 X3 X5
2 2 7 17 12 22
4 4 9 19 14 24
1 1 6 16 11 21
3 3 8 18 13 23
5 5 10 20 15 25
請注意,這將行和列中的值保持在一起,但列和行的順序不同。如果您希望數據集完全隨機化,那麼數據框並不是一個簡單的方法。我會做這個使用矩陣,但它需要多一點的工作,因爲@DWin顯示
mat <- matrix(1:25, ncol = 5)
pmat <- mat
set.seed(42)
pmat[] <- mat[sample(length(mat))]
pmat
> pmat
[,1] [,2] [,3] [,4] [,5]
[1,] 23 11 24 10 5
[2,] 25 21 20 9 8
[3,] 7 3 13 1 18
[4,] 19 12 4 16 2
[5,] 14 17 6 15 22
你可以做什麼,我用在與基體相同的方式將數據幀使用略有不同的索引到做一個以上
mat[sample(nrow(mat)), sample(ncol(mat))]
> set.seed(42)
> mat[sample(nrow(mat)), sample(ncol(mat))]
[,1] [,2] [,3] [,4] [,5]
[1,] 15 25 5 10 20
[2,] 14 24 4 9 19
[3,] 11 21 1 6 16
[4,] 12 22 2 7 17
[5,] 13 23 3 8 18
+1。我有*精確*相同的答案排隊去,甚至下到功能名稱!你得在這裏快點。 – 2013-05-10 17:04:46
@ SimonO101現在你應該知道只是「等待它」。 (XKCD/1190)。與此同時,我只是想建議'sample(as.matrix(df),prod(dim(df)))',但是Gavin的方法具有返回數據幀的小優點。 – 2013-05-10 17:06:21
等一下:Gavin的功能完全符合OP要求的功能,而我的偷偷摸摸的代碼會以不同的方式加擾。請注意,'permDF'將所有行的元素放在一起,儘管行號不同,順序也不同。所以這取決於你想要結果的「隨機性」。 – 2013-05-10 17:10:58
- 1. 數據幀列的組合和排列
- 2. 按數字列排序數據幀
- 3. r中按列排序的數據幀
- 4. Python數據幀行和列
- 5. 重新排列數據幀
- 6. 重新排列數據幀的列
- 7. 按鍵列合併數據幀行
- 8. 按行排列的2個數據幀之間的R關聯
- 9. 按矢量對數據幀列表進行排序
- 10. 按列拆分數據幀
- 11. R:按數據順序排列數據幀
- 12. 按行中的行數值排列數據,並按列中的值排序R
- 13. [R重新排列數據幀:一些行的列
- 14. 重複和重新排列在數據幀列
- 15. 根據列重新排列數據幀的列意思是
- 16. 按數據中的列進行排序
- 17. 按羣組排列數據
- 18. 排序熊貓數據幀的列
- 19. 重新排列r中的數據幀
- 20. 如何排名數據幀列
- 21. 排序數據幀的所有列
- 22. 在大熊貓數據幀排序列
- 23. 重新排列數據幀結構
- 24. 按行排列在pyspark中的數據幀上的行明智操作
- 25. pandas:總結兩行數據幀而不重新排列數據幀?
- 26. R按子列排列數據框
- 27. 在R中按兩列排序數據幀
- 28. 使用長字符串按列排序R數據幀
- 29. 排序火花數據幀的列按日期
- 30. 按日期排序火花數據幀列
+1給你!在這些情況下,我總是忘記了'[]'的力量。 – 2013-05-10 17:07:18
這是我在評論中的解決方案....教我不要作爲回答發佈:-((即使這是錯誤的答案 - 至少在加文的例子中,它顯然不是一個完整的隨機序列,正如我在那裏指出的那樣) – 2013-05-10 17:11:59
我要離開它了,但是OP的想法並不完全清楚,我確實同意在列中進行排列,然後排列_en_bloc_會得到不同的結果 – 2013-05-10 17:15:24