回答
这将是一个很大更快地做到这一点的一个矩阵:
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