See also: How to find the linearly independent columns (rows) of a matrix - #14 by stevengj (although this wasn’t written with sparse QR in mind). This returns a list of which of the columns of A are independent (up to some tolerance), and you can then use those columns as a basis — this might be a good approach to adapt for sparse A since its columns are sparse (albeit not orthonormal).
What sizes and ranks of sparse matrices are you interested in?