在R

时间:2019-07-06 13:06:29

标签: r dataframe random shuffle

我正在寻找一种函数或算法来改组R中的float的数据帧/矩阵,而不仅仅是按行或列,而是对值进行完全的深度随机化。

我尝试过函数sample()先对行进行混排,然后对列进行混排,但是同一行的元素将以不同的顺序最终出现在同一行中,我希望更多地进行完全的混排。

df = t1 t2 t3 t3
   g1 1 4 4 7 0
  g2 8 8 7 2 9
 g3 4 6 8 8 1

应该导致

df = t1 t2 t3 t3
   g1 8 2 2 4 1
  g2 2 1 1 8 6
  g3 7 7 9 7 0

1 个答案:

答案 0 :(得分:1)

如果您使用unlist,我相信您仍然可以使用sample

df <- data.frame(
  row.names = c("g1", "g2", "g3"),
  t1 = c(1, 8, 4),
  t2 = c(4, 7, 6),
  t3 = c(7, 2, 8),
  t4 = c(0, 9, 1)
)
df

shuffle <- sample(unlist(df), size = length(unlist(df)))
shuffled_matrix <- matrix(shuffle, nrow = nrow(df), ncol = ncol(df))
df_shuffled <- data.frame(shuffled_matrix)
row.names(df_shuffled) <- row.names(df)
colnames(df_shuffled) <- colnames(df)
df_shuffled