代码之家  ›  专栏  ›  技术社区  ›  Prateek Sharma

仅含1个编号的样本

  •  1
  • Prateek Sharma  · 技术社区  · 7 年前

    我正在尝试创建一些模拟数据。为了创建集群数据,我指定了处方医生是在一个还是在多个当地卫生区域(LHA)工作。现在,我正试图根据患者的LHA为患者指定一个处方。其代码位于以下代码块中。

    for (i in seq_along(data$LHA)) {
      data$prescriber_id[i] <- sample(x = number_of_LHAs_worked$prescriber_id[
        number_of_LHAs_worked$assigned_LHAs_2 == data$LHA[i]], 
                                      size = 1)
    }
    

    该循环适用于多个LHA中的处方药(即,给定给样本函数的x长度大于1。但是,当处方药由于样本函数的行为而仅在一个LHA中工作时,它会失败。

    sample(x = 154, size = 1) 
    

    当x只有一个数字时,R会创建一个从1到x的索引,然后随机选择该范围内的一个数字。

    虽然我已经为自己的目的找到了解决方案;我感兴趣的是,看看其他人是否已经找到了使示例函数更一致地工作的方法。具体来说,强制sample函数仅使用指定的集。

    sample(x = 154:155, size = 1)    # here the function chooses only a number in the set {154, 155}. 
    
    1 回复  |  直到 7 年前
        1
  •  1
  •   alistaire    7 年前

    ?sample 在示例中提供答案:

    set.seed(47)
    
    resample <- function(x, ...) x[sample.int(length(x), ...)]
    
    # infers 100 means 1:100
    sample(100, 1)
    #> [1] 98
    
    # stricter
    resample(100, 1)
    #> [1] 100
    
    # still works normally if explicit
    resample(1:100, 1)
    #> [1] 77