我正在尝试使用R并希望实现一个运行1000000
次的循环,并创建一个长度为10
的向量,并将每个向量添加到名为cycle
的数据框中并且它已迭代number
。
这是我目前的代码:
loser <- 100
winner <- 500
percentageWinner <- 70
runns <- 1000000
numbs <- 10
for(i in runns ) {
randNumb <- runif(numbs, min=0, max=100)
outcome <- ifelse(randNumb < percentageWinner, winner, loser) # true are winners and false are losers
df <- data.frame(outcome)
colnames(df)[which(names(df) == "outcome")] <- paste("cycle",i)
}
df
我很想在另一个data.frame列旁边添加矢量。
有任何建议,怎么做?
感谢您的回复!
答案 0 :(得分:3)
在您的代码中,在for循环的每次迭代中,您都会i
(1
)覆盖i <- 1
。如果删除它,它将始终等于runns
,即只有1个循环。
您需要更改代码,例如:
loser <- 100
winner <- 500
percentageWinner <- 70
runns <- 1000000
numbs <- 10
outcome <- matrix(NA, numbs, runns)
for(i in seq_len(runns)) {
randNumb <- runif(numbs, min=0, max=100)
outcome[,i] <- ifelse(randNumb < percentageWinner, winner, loser)
}
df <- data.frame(outcome)
colnames(df) <- paste0("cycle",seq_len(runns))
或者你可以避免循环:
randNumb <- runif(numbs*runns, min=0, max=100)
outcome <- ifelse(randNumb < percentageWinner, winner, loser)
outcome <- matrix(outcome, numbs, runns)
df <- data.frame(outcome)
colnames(df) <- paste0("cycle",seq_len(runns))