Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在R中洗牌数据帧的块_R_Dataframe - Fatal编程技术网

在R中洗牌数据帧的块

在R中洗牌数据帧的块,r,dataframe,R,Dataframe,我有一个90行90列的数据框 我的目标是将这个数据帧分成9个部分,每个部分有30行30列。然后,我想随机洗牌这9个片段,以获得一个新的数据帧 我不知道如何处理这个问题,因为我对R相当陌生。 感谢您的帮助 也许您可以使用split+sample,尝试以下代码,这有助于将数据块洗牌 set.seed(1) mat <- matrix(data = rnorm(90 * 90), ncol = 90, nrow = 90) rrnd <- split(sample(seq(nrow(mat

我有一个90行90列的数据框

我的目标是将这个数据帧分成9个部分,每个部分有30行30列。然后,我想随机洗牌这9个片段,以获得一个新的数据帧

我不知道如何处理这个问题,因为我对R相当陌生。
感谢您的帮助

也许您可以使用
split
+
sample
,尝试以下代码,这有助于将数据块洗牌

set.seed(1)
mat <- matrix(data = rnorm(90 * 90), ncol = 90, nrow = 90)
rrnd <- split(sample(seq(nrow(mat))), gl(3, nrow(mat) / 3))
crnd <- split(sample(seq(ncol(mat))), gl(3, ncol(mat) / 3))

mat.shuffle <- c()
for (i in rrnd) {
  for (j in crnd) {
    mat.shuffle <- c(mat.shuffle, list(mat[i, j]))
  }
}
你会看到

> str(out)
 num [1:90, 1:90] -0.639 -0.984 -0.108 -0.939 1.743 ...
> str(mat.shuffle)
List of 9
 $ : num [1:30, 1:30] -0.639 -0.984 -0.108 -0.939 1.743 ...
 $ : num [1:30, 1:30] -0.718 -0.154 -0.29 -0.796 1.7 ...
 $ : num [1:30, 1:30] -0.886 0.887 -0.381 0.371 0.327 ...
 $ : num [1:30, 1:30] -0.4555 -0.901 0.0312 -3.0223 0.8688 ...
 $ : num [1:30, 1:30] 0.705 1.559 -1.278 -0.676 1.933 ...
 $ : num [1:30, 1:30] -0.1916 -0.98649 -1.65769 0.00104 -0.19544 ...
 $ : num [1:30, 1:30] 1.668 -0.869 1.469 -0.222 -1.869 ...
 $ : num [1:30, 1:30] 0.9931 0.4116 1.995 -0.4456 -0.0692 ...
 $ : num [1:30, 1:30] -1.462 -0.206 1.197 -1.611 -1.708 ...
在向量列表上使用
sample
,然后取消列表和子集: 如果我理解正确的话,你在尝试做一些类似于3*3的幻灯片拼图的事情,对吗?将df分成30个块,然后“洗牌”这些块。这将做到:

###创建一个90 x 90的数据帧
种子(2)

谢谢你!这也很有效!非常感谢。这真的很有效!
> str(out)
 num [1:90, 1:90] -0.639 -0.984 -0.108 -0.939 1.743 ...
> str(mat.shuffle)
List of 9
 $ : num [1:30, 1:30] -0.639 -0.984 -0.108 -0.939 1.743 ...
 $ : num [1:30, 1:30] -0.718 -0.154 -0.29 -0.796 1.7 ...
 $ : num [1:30, 1:30] -0.886 0.887 -0.381 0.371 0.327 ...
 $ : num [1:30, 1:30] -0.4555 -0.901 0.0312 -3.0223 0.8688 ...
 $ : num [1:30, 1:30] 0.705 1.559 -1.278 -0.676 1.933 ...
 $ : num [1:30, 1:30] -0.1916 -0.98649 -1.65769 0.00104 -0.19544 ...
 $ : num [1:30, 1:30] 1.668 -0.869 1.469 -0.222 -1.869 ...
 $ : num [1:30, 1:30] 0.9931 0.4116 1.995 -0.4456 -0.0692 ...
 $ : num [1:30, 1:30] -1.462 -0.206 1.197 -1.611 -1.708 ...