<p>You can do a very impressive bit of sparse SVD in R using random projection as described in <a href="http://arxiv.org/abs/0909.4061" rel="noreferrer">http://arxiv.org/abs/0909.4061</a></p>

<p>Here is some sample code:</p>

<pre><code># computes first k singular values of A with corresponding singular vectors
incore_stoch_svd = function(A, k) {
  p = 10              # may need a larger value here
  n = dim(A)[1]
  m = dim(A)[2]

  # random projection of A    
  Y = (A %*% matrix(rnorm((k+p) * m), ncol=k+p))
  # the left part of the decomposition works for A (approximately)
  Q = qr.Q(qr(Y))
  # taking that off gives us something small to decompose
  B = t(Q) %*% A

  # decomposing B gives us singular values and right vectors for A  
  s = svd(B)
  U = Q %*% s$u
  # and then we can put it all together for a complete result
  return (list(u=U, v=s$v, d=s$d))
}
</code></pre>
SVD for sparse matrix in R
<p>I've got a sparse <code>Matrix</code> in R that's apparently too big for me to run <code>as.matrix()</code> on (though it's not super-huge either).  The <code>as.matrix()</code> call in question is inside the <code>svd()</code> function, so I'm wondering if anyone knows a different implementation of SVD that doesn't require first converting to a dense matrix.</p>