循环遍历变量usind数据表

时间:2015-12-13 15:25:04

标签: r data.table

我有以下代码,我希望能够只更改'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]

1 个答案:

答案 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中的赋值构造名称有效....这对我的阅读有点意外,但那就是由前两行暗示。 (是的。它对我也有用。)