在新列名称下的 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))
我正在试验 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))