如何同时随机化所有子列表的顺序

时间:2018-04-23 10:59:43

标签: r list

我希望随机化子列表的顺序,但保留结构。为了说明,我可以使用数据框执行此操作:

df1  <-  data.frame("X1" = LETTERS[1:5], "X2" = letters[1:5])
df1

df1R <- df1[sample(df1[,1]),]
df1R

> df1
  X1 X2
1  A  a
2  B  b
3  C  c
4  D  d
5  E  e
> 
> df1R <- df1[sample(df1[,1]),]
> df1R
  X1 X2
2  B  b
5  E  e
1  A  a
3  C  c
4  D  d

你可以在这里看到整体订单是随机的,但行保持在一起,这就是我保留结构的意思 - A留在a,B留在b ...

我想将其实现为一个列表:

m1  <- list(LETTERS[1:5], letters[1:5])

但是我坚持如何,我已经好好看了一下,但没有找到解决方案。有什么建议吗?

结果如下:

> m1R
[[1]]
[1] "B" "C" "E" "A" "D"

[[2]]
[1] "b" "c" "e" "a" "d"

1 个答案:

答案 0 :(得分:4)

您可以这样做以重新排序所有元素:

neworder <- sample.int(5)
lapply(m1, function(x) x[neworder])