在新列名下添加data.frame旁边的向量

时间:2015-08-13 05:47:29

标签: r statistics

我正在尝试使用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列旁边添加矢量。

有任何建议,怎么做?

感谢您的回复!

1 个答案:

答案 0 :(得分:3)

在您的代码中,在for循环的每次迭代中,您都会i1)覆盖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))