If you specify nothing at thor::Action, the Realtime mode is specified, e.g. it is active as long as the key is held down. Therefore, PlayAnimation() starts the animation again and again, as long as you hold the right arrow key.
You should separate the actions to pressed key (plays the animation) and release key (stops the animation).
map[BeginRun] = Action(sf::Keyboard::Right, Action::PressOnce);
map[EndRun] = Action(sf::Keyboard::Right, Action::ReleaseOnce);
if (map.IsActive(BeginRun))
animator.PlayAnimation(...);
else if (map.IsActive(EndRun))
animator.StopAnimation(...);
By the way, one clock is enough. When you call GetElapsedTime(), you already have the difference since the last frame (because you restart the clock every frame).