2017-04-17 82 views
2

此链接回答了我的问题的一部分:How to randomize (or permute) a dataframe rowwise and columnwise?R:按数据顺序排列数据帧

> df1 
    a b c 
1 1 1 0 
2 1 0 0 
3 0 1 0 
4 0 0 0 

逐列洗牌给我下面的输出df3,这是重新排序的列

> df3 <- df1[,sample(ncol(df1))] 
> df3 
    c a b 
1 0 1 1 
2 0 1 0 
3 0 0 1 
4 0 0 0 

我想的是,列名应随之改变。行方向和列方式的总数保持不变,只是列名被重新分配。类似于df4。我怎样才能做到这一点?

> df4 
    c a b 
1 1 1 0 
2 1 0 0 
3 0 1 0 
4 0 0 0 

PS:我如何保持df的行形状?当我发布问题时,格式崩溃了?

回答

3

您可能只想对列名进行取样。例如:

names(df) <- names(df)[sample(ncol(df))] 
+0

非常感谢!这是非常棒的快速帮助。 @P Lapointe,请您指出我的df格式正确的方向吗? – Rav

+0

@Rav虽然你标记了另一个用户,你的问题是什么意思? – 989

+1

@P Lapointe编辑我的问题,以正确的格式带来df。请参阅我的PS评论。我只是想知道,所以我不再重复。 – Rav