Thank you, and thanks for writing that code! That is the perfect answer to my question. I hope the R development team will consider expanding the functionality of eigen() to include the option to retain only the first few eigenvectors and/or eigenvalues. To me it seems very common in statistics to work with a few eigenvectors instead of with all of them.

Mike


On Fri, 2 May 2014, Yixuan Qiu wrote:

Exactly.
The syntax is intended to mimic eigs() in Matlab and Octave.

library(rARPACK)
eigs(X, 10)           # If your X is of class "dsyMatrix"
eigs_sym(X, 10)   # If X is of class "matrix"


Best,
Yixuan

2014-05-02 4:48 GMT-04:00 Berend Hasselman <b...@xs4all.nl>:

On 02-05-2014, at 09:17, Mike Miller <mbmille...@gmail.com> wrote:

I have a symmetric matrix, X, and I just want the first K eigenvectors (those 
associated with the K largest eigenvalues).  Clearly, this works:

eigs <- eigen( X, symmetric=TRUE )

K_eigenvectors <- eigs$vectors[ , 1:K ]
K_eigenvalues <- eigs$values[ 1:K ]

rm(eigs)

In order to do that, I have to create the matrix eigs$vectors which is the same 
size as X.  Sometimes X has 100 million elements or more.  Usually I want only 
the first 10 eigenvectors instead of all 10,000.  Is there any R function that 
will allow me to extract just the few that I want?  This would be analogous to 
the [V,d] = eigs(X,K) function in Octave/MATLAB.


You can find possibly relevant stuff with

library(sos)
findFn("eigenvalue”)

which is how I found package rARPACK, which may be exactly what you need/want.

Berend

Best,
Mike
______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to