R 按行和列排列数据帧

R 按行和列排列数据帧,r,permutation,R,Permutation,有人知道如何将数据框中的所有数据随机化吗? 我的意思是,我将得到一个新的数据帧,其中数据按行和列排列,以获得一个新的数据帧,其编号与我在第一个数据帧中的编号相同 大概是这样的: 谢谢 只需对行数和列数分别使用sample(),然后使用sample()的结果进行索引 在矩阵上执行此操作要快得多: dm <- matrix(1:25, ncol = 5); dm dm[] <- sample(dm); dm dm随机化功能来自NMF软件包可能就是您想要的 从文档: 随机化排列独立地排列

有人知道如何将数据框中的所有数据随机化吗? 我的意思是,我将得到一个新的数据帧,其中数据按行和列排列,以获得一个新的数据帧,其编号与我在第一个数据帧中的编号相同

大概是这样的:

谢谢

只需对行数和列数分别使用
sample()
,然后使用
sample()
的结果进行索引


在矩阵上执行此操作要快得多:

dm <- matrix(1:25, ncol = 5); dm
dm[] <- sample(dm); dm

dm
随机化
功能来自
NMF
软件包可能就是您想要的

从文档:

随机化排列独立地排列列表中每列中的条目 类似于矩阵的对象,用于生成可用于 置换测试或引导分析


+1.我得到了完全相同的答案,甚至是函数名!“你在这里要快一点!”西蒙诺101现在你应该知道“等等”。(xkcd/1190)。同时,我只是想建议
sample(as.matrix(df),prod(dim(df))
,但是Gavin的方法有一个小优点,就是返回一个数据帧。等一下:Gavin的函数完全按照OP的要求执行,而我的狡猾的代码将以不同的方式进行置乱。请注意,
permDF
将一行中的所有元素保持在一起,尽管是以不同的行和顺序。因此,这取决于您希望结果的“随机性”。看看您的结果,我怀疑我的说法,即先在列中进行置换,然后对这些结果进行块置换,将得到与“完全”置换相同的结果。@DWin是的,这只是将行和列混洗,但将行和列中的元素保持在一起。如果你需要完全随机化,那么你的方式就是我的方式——我甚至开始为此编写编辑。我将添加一个不解释这一点的选项。为您添加+1!!在这种情况下,我总是忘记了
[]
的威力。这是我在评论中提出的解决方案。。。。教我不要把帖子当作答案:-((即使是错误的答案——至少在@Gavin的例子中,它显然不是一个完全随机的序列,正如我在那里指出的那样)我不想说了。不清楚OP想要什么。我同意在一列中进行排列,然后在一个整体中对列进行排列,会得到不同的结果。
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
dm <- matrix(1:25, ncol = 5); dm
dm[] <- sample(dm); dm
 dm <- dm[ sample(nrow(dm)), sample( ncol(dm)) ]