首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >函数返回Number而不是team?

问函数返回Number而不是team?
EN

Stack Overflow用户
提问于 2020-06-19 13:47:54
回答 1查看 62关注 0票数 0

我的主要目标是创建基于团队得分的赔率,并返回一个“模拟”的获胜者。但是每当我执行获胜者(Blue_Jays,水手队)时,它返回1100,这是蓝鸟的正确值,但我希望它返回球队名称。

代码语言:javascript
复制
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)
  }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-06-19 14:14:27

使用deparse和substitute捕获团队名称。

代码语言:javascript
复制
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条件。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62464051

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档