R 如何随机化列顺序的子集

R 如何随机化列顺序的子集,r,permutation,shuffle,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

我有一个数据帧,我想随机调整某些列的顺序。例如,这里有一个例子来说明我所拥有的:

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

我已经找到了许多在列中排列行的方法,但还没有找到任何方法来排列列的顺序。任何帮助都将不胜感激

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

df[c(1:3, sample(4:ncol(df)))]
通过只返回列名,让我们看看这是如何处理
mtcars

replicate(7, names(mtcars[c(1:3, sample(4:ncol(mtcars)))]))
#       [,1]   [,2]   [,3]   [,4]   [,5]   [,6]   [,7]  
#  [1,] "mpg"  "mpg"  "mpg"  "mpg"  "mpg"  "mpg"  "mpg" 
#  [2,] "cyl"  "cyl"  "cyl"  "cyl"  "cyl"  "cyl"  "cyl" 
#  [3,] "disp" "disp" "disp" "disp" "disp" "disp" "disp"
#  [4,] "carb" "am"   "hp"   "qsec" "am"   "am"   "am"  
#  [5,] "wt"   "hp"   "drat" "carb" "carb" "wt"   "carb"
#  [6,] "hp"   "gear" "vs"   "drat" "qsec" "gear" "qsec"
#  [7,] "drat" "carb" "am"   "vs"   "wt"   "vs"   "hp"  
#  [8,] "qsec" "vs"   "carb" "wt"   "gear" "hp"   "gear"
#  [9,] "vs"   "drat" "gear" "am"   "drat" "drat" "drat"
# [10,] "am"   "wt"   "qsec" "gear" "vs"   "qsec" "wt"  
# [11,] "gear" "qsec" "wt"   "hp"   "hp"   "carb" "vs"  

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

Nah,这是一个非常好的答案,不管怎样,在以前的版本中:)