【问题标题】:Can `sample()` in R just sample in a specified order? [duplicate]R中的“sample()”可以按指定的顺序采样吗? [复制]
【发布时间】:2017-11-16 23:27:55
【问题描述】:

我想知道如何从 1 到 1000 生成 1000 个整数,在 R 中一次一个。将其设为函数,这意味着在第一次运行函数,函数应该产生1,第二次运行2,第三次运行3,...1000?

我在 R 中尝试了以下操作,但没有成功:

gen = function(n){
  sample(1:n, 1, replace = FALSE)
  }
gen(1000)

【问题讨论】:

  • 看起来你想要的是来自迭代器package的东西。
  • 顺便说一句,这是一个可怕的想法。您可能需要重新考虑您的方法。
  • Down.voter 你能解释一下拒绝这个问题的原因吗?
  • @rnorouzian,我也真的不知道谁投了反对票,为什么!?

标签: r function random sampling


【解决方案1】:
gen <- function(n)  {replicate(1000,sample(1:n,1))}

【讨论】:

  • 我猜你可能误解了我的目的,我在每次运行函数时都要求生成一个数字。也就是说,第一次运行gen(1000),该函数应该生成1,第二次运行gen(1000)它必须生成2...
  • 我猜是我误解了意图,其实我还是不明白。
  • 这是迭代。
  • replicate 是一个迭代器....
【解决方案2】:

这是非常糟糕的做法,您最好重新考虑您的计划,但我们可以使用全局变量来做到这一点,使用 &lt;&lt;-

myfunc <- function(){
  if(!exists('mycounter')){
    mycounter<<-1
  }else {
    mycounter <<- mycounter + 1
  }
  return(mycounter)
}

> myfunc()
[1] 1
> myfunc()
[1] 2
> myfunc()
[1] 3
> myfunc()
[1] 4

您可以将其扩展到例如:索引另一个随机向量。不过, set.seed() 可能会是你想要的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-01-19
    • 1970-01-01
    • 1970-01-01
    • 2021-09-01
    • 2020-11-24
    • 1970-01-01
    • 1970-01-01
    • 2021-05-20
    相关资源
    最近更新 更多