嵌套for循环生成R中概率不同的随机变量
我试图编写一个for循环,它使用不同的概率值从几何分布生成随机变量。然而,我编写的代码只使用序列中的最后一个概率来生成随机变量,见下文嵌套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]
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
)