Completing two vectors into a basis of $\mathbb R^4$. Let $e_1=(1,1,0,0)$ and $e_2=(1,1,0,1)$ and $e_3=(0,0,0,1)$. Let $E=\operatorname{span}(e_1,e_2,e_3)$. I want to determine the dimension of the vector subspace $E$. And then complete into a basis of $\mathbb R^4$.
My try: We have that $e_3=e_2-e_1$ so the family $e_1,e_2,e_3$ is linearly dependent. The family $e_1,e_2$ is linearly independent, since it generates $E$ then it is a basis of $E$ and hence $\dim(E)=2$.
Now by exchange lemma we know that we this linearly independent family can be extended into a basis of $\mathbb R^4$ and the vectors to be added are be chosen from a generating family of $\mathbb R^4$ for example the canonical basis of $\mathbb R^4$, $u_1=(1,0,0,0)$, $u_2=(0,1,0,0)$, $u_3=(0,0,1,0)$ and $u_4=(0,0,0,1)$. We have to add the vectors and check for linear independence. We can't add $u_4$ since we know that $u_4=e_3$ and we already checked that $e_1,e_2,u_4$ is linearly dependent. We add $u_1$ and we verify that $e_1,e_2,u_1$ is linearly independent. It remains another vector to have a basis. We take $u_2$ but we show that the family $e_1,e_2,u_1,u_2$ is not linearly independent. Hence we can be sure without checking that $ e_1,e_2,u_1,u_3$ is linearly independent and hence it is a basis for $\mathbb R^4$.
Is my reasoning correct and is this the standard method to complete a linearly independent family into a basis? thank you for your clarifications!
 A: You need not choose vectors from the canonical basis for $\mathbb{R}^4$; any basis will do. There may be more convenient bases from which you can add vectors, if it's easier to prove that those vectors are linearly independent with the vectors you already have.
Using the canonical basis is certainly not wrong (and it is an intuitive choice), but you should know that there is no property unique to this basis that makes this process work.
A: If you want a general way to do this when $e_1$, $e_2$ are not this simple, you can use one of two methods, Gramm-Schmidt procedure or Row reduced Echelon form. I will show you how to do it both ways for a more general case. Also, it is easier to write vectors as rows as it takes up less space and naturally works with Echelon form.
Also, to keep it simple, I will show the work for $\mathbb{R}^3$. You can extend it to $\mathbb{R}^4$. Just more work!
$$e_1 = (1,2,3), e_2 = (4,5,6), e_3 = (2, 1, 0)$$
In both the methods you start with your favorite basis. My favorite is :
$$
f_1 = (1,0,0), f_2=(0,1,0), f_3=(0,0,1)
$$  
I will show how to do this using Row reduced Echelon form (without row exchanges), as this is often overlooked.
Let 
$$A=\pmatrix{1&2&3\cr 4&5&6\cr 2&1&0\cr 1&0&0\cr 0&1&0\cr 0&0&1\cr }$$
where the rows of $A$ are just the $e$'s followed by $f$'s.
If we perform row reductions we end up with
$$\bar A=\pmatrix{1&0&0\cr 0&1&0\cr 0&0&0\cr 0&0&1\cr 0&0&0\cr 0&0&0\cr }$$
We can now interpret the result as follows:


*

*The first three rows come from $e$'s. Of these only first two are nonzero. So these two rows span the same space as the first two $e$'s, i.e. $e_3$ is linearly dependent on $e_1$ and $e_2$. You can use these non zero rows or the corresponding $e$'s.

*The remaining rows come from $f$'s. Non zeros rows complete the basis. Again we can either use the non-zero rows or the corresponding $f$'s. In this case they are the same but if you started with a different favorite basis, you may want to use them instead.

