Adam--
In your code you were extracting the solution to solve, which turns out to be a row vector with dimensions 1,2:
solve = NSolve[{x - y == 1, 2 x + y == 1}];
Dimensions[solve]
Your extract function was trying to pull the second row of solve, which doesn't exist. I utilize the two bracket position notation instead of the Extract function so I can keep things straight.
Second, don't assign a value to a variable that you are trying to keep a variable. Mathematica's Solve function outputs a list of replacement rules and doesn't assign a value to the variables assigned in the Solve function. This way, those variables remain variables and the output of your Solve function won't change in the future, even if you rerun it multiple times.