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

Adding vector next to data.frame under new column name

我正在试验 R 并想实现一个循环,该循环运行 1000000 次并创建一个长度为 10 的向量,并将每个向量添加到名称为 [=14] 的数据框中=] 和它迭代的 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 列旁边。

有什么建议,怎么做?

感谢您的回复!

在您的代码中,在 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))