Question: The signs of the eigenvectors in the `eigen` function change depending on the specification of the `symmetric` argument. Consider the following example:

```
set.seed(1234)
data <- matrix(rnorm(200),nrow=100)
cov.matrix <- cov(data)
vectors.1 <- eigen(cov.matrix,symmetric=TRUE)$vectors
vectors.2 <- eigen(cov.matrix,symmetric=FALSE)$vectors
#The second and third eigenvectors have opposite sign
all(vectors.1 == vectors.2)
FALSE

```

This also has implications for principal component analysis as the `princomp` function appears to calculate the eigenvectors for the covariance matrix using the `eigen` function with `symmetric` set to `TRUE`. 

```
pca <- princomp(data)
#princomp uses vectors.1
pca$loadings
Loadings:
       Comp.1 Comp.2
 [1,] -0.366 -0.931
 [2,]  0.931 -0.366

               Comp.1 Comp.2
SS loadings       1.0    1.0
Proportion Var    0.5    0.5
Cumulative Var    0.5    1.0
vectors.1
           [,1]       [,2]
[1,] -0.3659208 -0.9306460
[2,]  0.9306460 -0.3659208

```

Can someone please explain the source or reasoning behind the discrepancy?

Answer: 
Eigenvectors remain eigenvectors after multiplication by a scalar (including -1).

The proof is simple:

If `v` is an eigenvector of matrix `A` with matching eigenvalue `c`, then by definition `Av=cv`.

Then, `A(-v) = -(Av) = -(cv) = c(-v)`. So `-v` is also an eigenvector with the same eigenvalue.

The bottom line is that this does not matter and does not change anything.
If you want to change the sign of eigenvector elements, then simply ensure $\mathbf{1}^T\mathbf{e}>1$. In other words, sum all the elements in each eigenvector, and ensure the sum is greater than one. If not, change the sign of each element to the opposite sign. This is the trick to get the sign of eigenvector elements, principal components, and loadings in PCA to come out the same as most statistical software.