Глубокая перетасовка данных в R - PullRequest
1 голос
/ 06 июля 2019

Я ищу функцию или алгоритм для перетасовки кадра данных / матрицы чисел с плавающей точкой в ​​R, а не только по строкам или столбцам, а скорее для полной глубокой рандомизации значений.

Я попытался использовать функцию sample (), чтобы перетасовать сначала строки, а затем столбцы, но элементы одной и той же строки окажутся в одной и той же строке просто в другом порядке, и я больше жду полной перестановки.

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

должно привести к

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

1 Ответ

1 голос
/ 06 июля 2019

Если вы используете 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
...