我有这个代码:
N=5
RowNum <-c(1:N)
Prob <- c(0.5,0.3,0.8,0.2,0.9)
Attempts <- c(rep(0,N))
Succeeded <- c(rep(0,N))
Overall <- data.frame(RowNum,Prob,Attempts,Succeeded)
set.seed(1)
addone <- function(vec) {
vec$Attempts <- vec$Attempts + 1
if(runif(1) < vec$Prob) {
vec$Succeeded <- vec$Succeeded + 1
} else {
vec <- addone(vec)
}
vec
}
make.new.df <- function(df) {
for(i in 1:nrow(df)) {
df[i, ] <- addone(df[i, ])
}
df
}
df1 <- make.new.df(Overall)
df1
这是使用 set.seed(1) 的输出
RowNum Prob Attempts Succeeded
1 1 0.5 1 1
2 2 0.3 4 1
3 3 0.8 3 1
4 4 0.2 2 1
5 5 0.9 1 1
我想创建一个循环,通过插入一个 N 然后这段代码将运行 N 次。例如 - 让我们设置 N=100,输出应该如下所示(使用 set.seed(1)):
RowNum Prob Attempts Succeeded
1 1 0.5 100 100
2 2 0.3 400 100
3 3 0.8 300 100
4 4 0.2 200 100
5 5 0.9 100 100
我会感谢你的帮助!