在这个答案中:https://stackoverflow.com/a/11503439/651779显示了如何以行和列的方式对数据帧进行混洗。我感兴趣的是明智地改进列。从原始数据框
> df1
a b c
1 1 1 0
2 1 0 0
3 0 1 0
4 0 0 0
洗牌专栏
> 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
c a b
1 0 1 1
2 1 0 0
3 1 0 0
4 0 0 0
现在,我通过遍历每一行,对行进行混洗,并将其放入数据帧来实现。有一个简单的方法吗?
答案 0 :(得分:2)
类似的东西:
t(apply(df1, 1, function(x) { sample(x, length(x)) } ))
这将以矩阵形式提供结果。如果你有因素,混合数字和字符等,请注意这会强制一切都是角色。