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”是一个单一值,而不是一个值范围