What are reasonable conventions for dimnames for eigenvectors? The standard 'eigen' function discards dimnames. If a matrix X is symmetric (and rownames = colnames), it seems more sensible to assign rownames(eigen(X)$vectors) <- rownames(X). The eigenvalues seem different, so I'm inclined to assign names like ev1, ev2, ..., to the eigenvectors and use those names for the columns of eigen(...)$vectors. However, this analysis does not apply if rownames != colnames. What should be done in that case? The 'solve' function uses a convention that might help here:
tst <- matrix(1:4, 2, dimnames=list(LETTERS[1:2], letters[3:4]))
> tst
 c d
A 1 3
B 2 4

solve(tst)
  A    B
c -2  1.5
d  1 -0.5

Tentative conclusion: If rownames != colnames (or the matrix is not symmetric), then dimnames(eigen(X)$vectors) = dimnames(X). That's because X = (vectors %*% values %*% solve(vectors)). If desired, the eigenvalues can be assigned names matching colnames(X). Does this make sense? I ask, because I'm writing a function 'EIGEN' as a wrapper for 'eigen' that tries to preserve dimnames. This analysis suggests that how dimnames are assigned is at least partly a matter of convention rather than mathematics.
     Thanks,
     Spencer Graves

______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel

Reply via email to