r - R中数据帧的混洗块
问题描述
我有一个 90 行和 90 列的数据框。
我的目标是将这个数据框分成 9 块,每块有 30 行和 30 列。然后,我想随机打乱这 9 个片段以获得一个新的数据帧。
我不确定如何解决这个问题,因为我在 R 中还很新。任何帮助都将不胜感激!
解决方案
在向量列表上使用sample
,然后取消列表和子集:
如果我理解正确,您正在尝试做一些类似于 3*3 滑动图片拼图的事情,对吧?您将 df 分成 30 个块,然后“洗牌”这些块。这将做到这一点:
### Create a 90 by 90 data frame
set.seed(2)
df <- as.data.frame(array(runif(90*90), dim = c(90,90)))
### Function to randomise subsetting
rand_dims <- function(){
myDims <- list(1:30, 31:60, 61:90)
unlist(sample(myDims))
}
### Shuffle 'chunks' of df
df[rand_dims(), rand_dims()] -> shuffled
### Checking the leading row/col names
### Shows we've succeeded
colnames(shuffled)[1:5]
#> [1] "V61" "V62" "V63" "V64" "V65"
rownames(shuffled)[1:5]
#> [1] "31" "32" "33" "34" "35"
由reprex 包(v0.3.0)于 2021-01-21 创建
推荐阅读
- android - 如何添加原生 android 项目以响应原生?
- gulp - Gulp 缩小,一些任务未完成
- python - OpenGL - 将场景渲染为墨卡托/圆柱
- javascript - 我有两个功能,当我运行程序时,似乎只有按钮点击计数器功能在运行。他们都单独工作
- php - 如何获取 PHP 上复选框的值?
- eclipse - 在eclipse中导入javadoc的简单方法
- c - 如何用 C 中的指针解决这个问题?
- java - Selenium webdriver错误无法在(竹子)上找到元素
- javascript - 如何映射对象数组并更改样式?
- sql-server - SSRS 折线图报告