如何随机化列顺序的子集

时间:2015-10-24 22:44:19

标签: r permutation shuffle

我有一个数据框,我想随机改组某些列的顺序。例如,这是一个代表我所拥有的例子:

V1  V2  V3  V4  V5  V6  V7  V8  V9  V10 V11 V12 V13 V14
ch1 12  A   9   10  6   5   6   3   4   6   5   7   5
ch2 13  T   7   10  1   7   3   3   3   1   7   8   6
ch3 14  T   5   7   7   2   6   8   1   1   8   1   5
ch4 15  G   8   9   2   7   9   7   7   3   10  10  4
ch5 16  T   8   2   8   2   4   7   1   8   10  3   2

我想保持前三列相同(V1-V3),然后随机改变其余列的顺序(V4-V14)。例如,

V1  V2  V3  V6  V5  V11 V4  V14 V10 V8  V7  V13 V12 V9
ch1 12  A   6   10  6   9   5   4   6   5   7   5   3
ch2 13  T   1   10  1   7   6   3   3   7   8   7   3
ch3 14  T   7   7   1   5   5   1   6   2   1   8   8
ch4 15  G   2   9   3   8   4   7   9   7   10  10  7
ch5 16  T   8   2   8   8   2   1   4   2   3   10  7

我找到了许多用于置换列内行的方法,但没有遇到任何用于改组列顺序的方法。任何帮助,将不胜感激。

1 个答案:

答案 0 :(得分:5)

您可以单独留下前三列,同时使用

对所有其他列进行洗牌
"abc" (s1, s2)
"abcabc" (s3)

让我们通过返回列名来了解这对df[c(1:3, sample(4:ncol(df)))] 的工作原理。

mtcars

我们可以看到前三个列名称(在此处显示为行)在每次运行时保持不变,而其他列名称则不同。