r - 随机化矩阵中的列名
问题描述
我正在尝试创建一个具有一组固定列值的矩阵,但在该固定值内,我想递增到一定数量。下面有更好的解释......(希望)
例如,我想要列标题 ODI.1.1、ODI.1.2、... ODI.1.30,然后转到 ODI.2.1、ODI.2.2...并重复 ODI.8.10。因此,每个 ODI 值中的第一个数字可以变为 8,语句中的第二个数字可以随机变为 1-30。
这是我现在拥有的代码。我知道这是不对的,因为我现在将列设置为 30,我只是想逐步分配 30 列 ODI.1.1、ODI1.2.、.... 值。
这就是我目前所拥有的,再次我希望能够达到 ODI.8.1 值,但我不确定如何从这里继续前进。我再次希望语句的第二个数字(ODI.1. 2)随机出现。我不太确定该怎么做......下面是我想要实现的示例。
ODI.1.1 ODI.1.2 ...... ODI.1.10
ODI.2.1 ODI.2.2 ...... ODI.2.18
ODI.3.1 ODI.1.2 ...... ODI.3.28
以下是我现在拥有的代码。我可以为语句 ODI 中的第一个数字打印出 1-8 的 ODI 语句的随机列表。1 .1,但我无法根据语句中的第二个数字 ODI.1 创建有序随机列表。1
n = 35
ODI = "ODI"
firstValue = 1:8
secondValue = 1:20
x <- sort(paste(ODI, firstValue, secondValue, sep ="."),
decreasing = FALSE)
x
现在有了代码,我得到了这个结果....
"ODI.1.1" "ODI.1.17" "ODI.1.9" "ODI.2.10" "ODI.2.18" "ODI.2.2" "ODI.3.11"
第二个值不像 1.1、1.2、1.3 那样随机排序。
解决方案
我不知道这是否是您想要的,但我们可以创建这些列名的所有可能组合,然后您可以从中随机抽取给定数量。
wat=expand.grid(1:8,1:30)
wat=paste0("ODI.",wat[,"Var1",drop=T],".",wat[,"Var2",drop=T])
sample(wat,5)
[1] "ODI.5.18" "ODI.1.30" "ODI.3.20" "ODI.3.1" "ODI.3.13"
推荐阅读
- python - 是否有其他方法可以创建一个空数组然后用 Python 填充它?
- java - 任何有 Android 和 xml 经验的人都可以问一个问题来解释一个谜
- c# - 以编程方式更改浏览器搜索提供程序
- openxml - 如何通过 OpenXML 将图像设置为矩形?
- r - 绘制背靠背图
- laravel - 如何在 Laravel 中使用 POINT 数据类型从 MySQL 中检索记录?
- python - 如何在 Python 中将“原始”字符串转换为“解码”字符串?
- c# - 如何将 Authorize 与 @inherits 一起使用?
- c - 如何拦截存储大小查询命令
- c++ - C++/C 代码在 M1 和 Intel 上有不同的执行块