我的主要目标是创建基于团队得分的赔率,并返回一个“模拟”的获胜者。但是每当我执行获胜者(Blue_Jays,水手队)时,它返回1100,这是蓝鸟的正确值,但我希望它返回球队名称。
Blue_Jays <- 100
Mariners <- 64
winner(Blue_Jays, Mariners)
winner <- function(team_one, team_two) {
team_one_score <- team_one / (team_one + team_two)
team_two_score <- team_two / (team_one + team_two)
winner_score <- runif(1, min = 0, max = 1)
if (team_one_score > team_two_score & winner_score <= team_one_score) {
winner <- team_one}
if (team_one_score > team_two_score & winner_score >= team_one_score) {
winner <- team_two}
if (team_two_score > team_one_score & winner_score <= team_two_score) {
winner <- team_two}
if (team_two_score > team_one_score & winner_score >= team_two_score) {
winner <- team_one}
if (team_one_score == team_two_score & winner_score >= team_two_score) {
winner <- team_one}
if (team_one_score == team_two_score & winner_score >= team_one_score) {
winner <- team_two}
return(winner)
}发布于 2020-06-19 14:14:27
使用deparse和substitute捕获团队名称。
winner <- function(team_one, team_two) {
team_name1 <- deparse(substitute(team_one))
team_name2 <- deparse(substitute(team_two))
team_one_score <- team_one / (team_one + team_two)
team_two_score <- team_two / (team_one + team_two)
winner_score <- runif(1, min = 0, max = 1)
if (team_one_score > team_two_score & winner_score <= team_one_score)
winner <- team_name1
if (team_one_score > team_two_score & winner_score >= team_one_score)
winner <- team_name2
if (team_two_score > team_one_score & winner_score <= team_two_score)
winner <- team_name2
if (team_two_score > team_one_score & winner_score >= team_two_score)
winner <- team_name1
if (team_one_score == team_two_score & winner_score >= team_two_score)
winner <- team_name1
if (team_one_score == team_two_score & winner_score >= team_one_score)
winner <- team_name2
return(winner)
}
set.seed(213)
Blue_Jays <- 100
Mariners <- 64
winner(Blue_Jays, Mariners)
#[1] "Blue_Jays"可以简化/删除一些if条件。
https://stackoverflow.com/questions/62464051
复制相似问题