1. Check 'symmetric'
2. ev <- eigen(x, symmetric, only.values = FALSE);
see eigen
for more details.
3. rNames = rownames(x); if this is NULL, rNames = if(symmetric)
paste('x', 1:nrow(x), sep='') else paste('xcol', 1:nrow(x)).
4. Parse 'valuenames', assign to names(ev[['values']]).
5. dimnames(ev[['vectors']]) <- list(rNames, valuenames)
NOTE: This naming convention is fairly obvious if 'x' is symmetric.
Otherwise, dimensional analysis suggests problems with almost any
naming convention. To see this, consider the following simple
example:
$$
X <- matrix(1:4, 2, dimnames=list(LETTERS[1:2], letters[3:4]))
$$
$$
X.inv <- solve(X)
$$
One way of interpreting this is to assume that colnames are really
reciprocals of the units. Thus, in this example, X[1,1] is in units
of 'A/c' and X.inv[1,1] is in units of 'c/A'. This would make any
matrix with the same row and column names potentially dimensionless.
Since eigenvalues are essentially the diagonal of a diagonal matrix,
this would mean that eigenvalues are dimensionless, and their names
are merely placeholders.