Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
嵌套for循环生成R中概率不同的随机变量_R_Loops_Nested - Fatal编程技术网

嵌套for循环生成R中概率不同的随机变量

嵌套for循环生成R中概率不同的随机变量,r,loops,nested,R,Loops,Nested,我试图编写一个for循环,它使用不同的概率值从几何分布生成随机变量。然而,我编写的代码只使用序列中的最后一个概率来生成随机变量,见下文 x <- list() y <- list() probs <- seq(0.1, 0.9, 0.1) for (i in 1:length(probs)) { for (j in 1:10000) { x[j] <- rgeom(n=1, prob=probs[i])+1 y[j] <- probs[i]

我试图编写一个for循环,它使用不同的概率值从几何分布生成随机变量。然而,我编写的代码只使用序列中的最后一个概率来生成随机变量,见下文

x <- list()
y <- list()
probs <- seq(0.1, 0.9, 0.1)
for (i in 1:length(probs)) {
  for (j in 1:10000) {
    x[j] <- rgeom(n=1, prob=probs[i])+1
    y[j] <- probs[i]
  }
}

x一个简单的解决方案可以是:

    x <- list()
    y <- list()
    probs <- seq(0.1, 0.9, 0.01)
    j<-1
    for (i in 1:length(probs)) {
      x[[j]] <- rgeom(n=10000, prob=probs[i])+1
      y[[j]] <- rep(probs[i], 10000)
      j<-j+1
    }
    x<- list(unlist(x))
    y<- list(unlist(y))

x一个简单的解决方案可以是:

    x <- list()
    y <- list()
    probs <- seq(0.1, 0.9, 0.01)
    j<-1
    for (i in 1:length(probs)) {
      x[[j]] <- rgeom(n=10000, prob=probs[i])+1
      y[[j]] <- rep(probs[i], 10000)
      j<-j+1
    }
    x<- list(unlist(x))
    y<- list(unlist(y))

x这不需要嵌套循环。如果您只想随机选择一个概率用于
rgeom()
函数,跨越10000次迭代,您可以执行如下操作,使用
sample()
函数选择将使用哪个prob,并将结果存储在
data.frame

x <- vector(mode = "double", length = 10000)
y <- vector(mode = "double", length = 10000)

probs <- seq(0.1, 0.9, 0.1)

for (i in 1:10000){
 prob <- probs[sample(1:length(probs), size = 1)]
 x[i] <- rgeom(1, prob = prob)
 y[i] <- prob
}

random_values <- data.frame(
  value = x,
  prob_used = y
)

您不需要为此使用嵌套循环。如果您只想随机选择一个概率用于
rgeom()
函数,跨越10000次迭代,您可以执行如下操作,使用
sample()
函数选择将使用哪个prob,并将结果存储在
data.frame

x <- vector(mode = "double", length = 10000)
y <- vector(mode = "double", length = 10000)

probs <- seq(0.1, 0.9, 0.1)

for (i in 1:10000){
 prob <- probs[sample(1:length(probs), size = 1)]
 x[i] <- rgeom(1, prob = prob)
 y[i] <- prob
}

random_values <- data.frame(
  value = x,
  prob_used = y
)