我有以下代码,我希望能够只更改'x'和'stat'并运行整个代码。目前我必须在rollapply函数的第5行中手动更改'pts'。如果我将'pts'更改为'stat'则会出错。谢谢你的帮助!
x = 5
stat = 'pts'
game_stats[,paste0('l',x,'g_', stat):=0]
game_stats[,paste0('l',x,'g_', stat):=NA]
game_stats[,paste0('l',x,'g_', stat):=rollapply(pts, list(-(1:x)), mean, fill=NA, align='right'),
by=team]
答案 0 :(得分:1)
如果没有示例,这仍然未经测试,但使用get
似乎是一件简单的事情,当您只有一个字符表示其名称时,这是传递对象的标准方法:
game_stats[,paste0('l',x,'g_', stat):=
rollapply( get(pts), list(-(1:x)), mean, fill=NA, align='right'), by=team]
这假设你知道paste0
表达式被测试为:=.data.table
中的赋值构造名称有效....这对我的阅读有点意外,但那就是由前两行暗示。 (是的。它对我也有用。)