On Feb 7, 2009, at 9:07 AM, Nash wrote:

Dear all, i have two problems

if i have a principal components analysis report as follows:

?princomp

problem one.

pc.cr <- princomp(USArrests, cor = TRUE)
pc.cr

i want to export a txt file (*.txt) to save "pc.cr" report
###########################################
Call:
princomp(x = USArrests, cor = TRUE)

Standard deviations:
  Comp.1    Comp.2    Comp.3    Comp.4
1.5748783 0.9948694 0.5971291 0.4164494

4  variables and  50 observations.
###########################################
what can i do ?

?sink




-----------------------------------------------------------
problem two.

load  <- loadings(pc.cr)
load

Loadings:
        Comp.1 Comp.2 Comp.3 Comp.4
Murder   -0.536  0.418 -0.341  0.649
Assault  -0.583  0.188 -0.268 -0.743
UrbanPop -0.278 -0.873 -0.378  0.134
Rape     -0.543 -0.167  0.818

              Comp.1 Comp.2 Comp.3 Comp.4
SS loadings      1.00   1.00   1.00   1.00
Proportion Var   0.25   0.25   0.25   0.25
Cumulative Var   0.25   0.50   0.75   1.00

i want to take out matrix

              Comp.1 Comp.2 Comp.3 Comp.4
SS loadings      1.00   1.00   1.00   1.00
Proportion Var   0.25   0.25   0.25   0.25
Cumulative Var   0.25   0.50   0.75   1.00

what can i do ?

When you look at load with str(), you only see the loadings matrix and not the rest of what you thought was a "result", which means to me that the print method for that class of object is doing something behind the scenes. See the method thusly:

> getAnywhere(print.loadings)
A single object matching ‘print.loadings’ was found
It was found in the following places
  registered S3 method for print from namespace stats
  namespace:stats
with value

function (x, digits = 3, cutoff = 0.1, sort = FALSE, ...)
{
    Lambda <- unclass(x)
    p <- nrow(Lambda)
    factors <- ncol(Lambda)
    if (sort) {
        mx <- max.col(abs(Lambda))
        ind <- cbind(1:p, mx)
        mx[abs(Lambda[ind]) < 0.5] <- factors + 1
        Lambda <- Lambda[order(mx, 1:p), ]
    }
    cat("\nLoadings:\n")
    fx <- format(round(Lambda, digits))
    names(fx) <- NULL
    nc <- nchar(fx[1], type = "c")
    fx[abs(Lambda) < cutoff] <- paste(rep(" ", nc), collapse = "")
    print(fx, quote = FALSE, ...)
    vx <- colSums(x^2)
    varex <- rbind(`SS loadings` = vx)
    if (is.null(attr(x, "covariance"))) {
        varex <- rbind(varex, `Proportion Var` = vx/p)
        if (factors > 1)
            varex <- rbind(varex, `Cumulative Var` = cumsum(vx/p))
    }
    cat("\n")
    print(round(varex, digits))
    invisible(x)
}
<environment: namespace:stats>

So vx = colSums(x^2); "SS loadings" = vx, "Proportion Var" = vx/p, and `Cumulative Var` = cumsum(vx/p).

You should be able to take it from there, since presumably you can work with the x matrix which is really just "load" by another name.

> x <- load

> colSums(x^2)
Comp.1 Comp.2 Comp.3 Comp.4
     1      1      1      1


--
David Winsemius


Can anyone help me ?

Nash 2009.02.07





--
Nash - morri...@ibms.sinica.edu.tw

______________________________________________
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.

______________________________________________
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