【问题标题】:Randomizing column names in matrix随机化矩阵中的列名
【发布时间】:2021-10-14 10:32:33
【问题描述】:

我正在尝试创建一个具有一组固定列值的矩阵,但在该固定值内,我想递增到一定数量。下面有更好的解释......(希望)

例如,我想要列标题 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.1 中的第一个数字打印出从 1-8 的 ODI 语句的随机列表,但我无法根据声明中的第二个数字,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 那样随机排序。

【问题讨论】:

    标签: r paste


    【解决方案1】:

    我不知道这是否是您想要的,但我们可以创建这些列名的所有可能组合,然后您可以从中随机抽取给定数量。

    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"
    

    【讨论】:

      猜你喜欢
      • 2014-06-25
      • 2017-08-26
      • 1970-01-01
      • 2017-02-09
      • 2012-01-01
      • 1970-01-01
      • 2020-11-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多