home_last3 = function(team,game){
g1 = filter(g, Team == team & Game > game)
g1 = head(g1, n=3)
return(sum(g1$goals))
}
print(home_last3("Arsenal","5"))
[1] 11
所以我有了上面这个函数,它的想法是在我所有英超联赛的数据集中,我想知道主队在他们之前的3场比赛中进了多少球,这个数据框g列出了每支球队的所有比赛和进球。
所以当我手动插入东西时,我的函数完全按照我想要的那样做。
但是,我想将此函数应用于原始数据集中的一个新列(Home_Last_3),在该列中,对于任何给定的比赛,它都可以查看主队的名称(col =“HomeTeam”)和比赛的编号(col=“Game”),并输出该编号。
然而,当我输入这个时:
df$Home_Last_3 = home_last3(df$HomeTeam,df$Game)
它只是在所有列中返回零。
我认为这与使用as.data.frame或sapply有关(但是sapply因为我在这里使用了第二个参数而对我很生气)。
1条答案
按热度按时间lvmkulzt1#
尝试
mapply
,它是sapply
的多元版本。如果我正确理解了你的函数,它应该可以工作: