【发布时间】:2021-12-20 06:06:05
【问题描述】:
我有来自《战舰》游戏的多个游戏的数据。它看起来像这样:
> data.frame(game=c(1,1,1,1,2,2,2,2),
position=c(2,4,3,1,1,2,3,4),
hit=c(0,0,1,0,1,0,0,0))
game position hit
1 1 2 0
2 1 4 0
3 1 3 1
4 1 1 0
5 2 1 1
6 2 2 0
7 2 3 0
8 2 4 0
每一行是玩家的一个动作:位置是平方数,命中表示他们是否击中了一艘船。 我想创建一个额外的行来指示每次移动之前的棋盘状态。它应该看起来像这样:
game position hit board_state
1 1 2 0 [NA,NA,NA,NA]
2 1 4 0 [NA,0,NA,NA]
3 1 3 1 [NA,0,NA,0]
4 1 1 0 [NA,0,1,0]
5 2 1 1 [NA,NA,NA,NA]
6 2 2 0 [1,NA,NA,NA]
7 2 3 0 [1,0,NA,NA]
8 2 4 0 [1,0,0,NA]
所以棋盘状态会根据上一步的位置和结果进行更新。
我发现这里具有挑战性的是,board_state 在行 r 上的定义取决于它在行 r-1 上的状态,而 lag 在这里没有用,因为它在同一列中。我希望这很清楚。
关于如何实现这一点的任何想法?谢谢!!!
【问题讨论】: