微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

R:在函数中创建数据框,其名称取决于输入

如何解决R:在函数中创建数据框,其名称取决于输入

因此,我创建了一个1950-2020年期间一些足球队的比赛结果的数据框,包括胜利率。

我现在想计算每年这些球队的胜率。这样我每队将有70个胜率。

为此,我编写了一个函数来计算给定年份中每个团队的胜率:

winrate_py_f <- function(team,data,year1){
  years = filter(results,year == year1)
  won = filter(years,home_team == team & difference > 0 | away_team == team & difference < 0)
  matches = filter(years,home_team == team | away_team == team)
  winrate{_year1} = ((nrow(won) / nrow(matches)) * 100)
  return(formatC(winrate))
}

现在,我想将结果命名为:例如,以1967年为winrate_1967。这就是{_year}部分的用途,但这显然行不通。

正确的方法是什么?

要特别清楚:

我想用这个函数(例如,巴西,数据,1950:2020)来调用函数,这样我就可以得出1950年至2020年之间巴西每年的胜率。

解决方法

与其在函数中进行赋值,不如返回输出,然后将函数的值assign返回到使用paste创建的对象

winrate_py_f <- function(data,team year1){
    years = filter(data,year == year1)
    won = filter(years,home_team == {{team}} & difference > 0 | 
              away_team == {{team}} & difference < 0)
    matches = filter(years,home_team == {{team}} | away_team == {{team}})
     ((nrow(won) / nrow(matches)) * 100)
    
  }

将该函数称为

assign(paste0("winrate_",1967),winrate_py_f(data,Brazil,1967))

现在检查

winrate_1967

注意:在这里,我们假设“ year1”是一个单一值,而不是一个值范围

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。