我正在尝试重新排序/随机播放数据帧的每一行的值,但无法弄清楚如何执行此操作。请参阅以下示例:
df1 #original data
# X1 X2 X3 X4 X5
#1 1 2 3 4 5
#2 6 7 8 9 10
#3 11 12 13 14 15
结果数据框应该看起来像这样(没有模式)。
df2 #each row is randomly shuffled
# X1 X2 X3 X4 X5
#1 2 4 1 5 3
#2 6 10 9 7 8
#3 15 13 11 14 12
我已尝试使用示例()示例here,但这并不是我想要的。 " shuffle column-wise"与我尝试做的最相似,但我想为每一行而不是整列执行sample()。
答案 0 :(得分:7)
我们可以使用data.table
library(data.table)
setDT(df1)[, as.list(sample(unlist(.SD))), .(rn = 1:nrow(df1))][, rn := NULL][]
注意:帖子中提到的OP是 rowwise 采样。
base R
解决方案:
df1[] <- t(apply(df1, 1, sample))