Ich führe eine Hauptkomponentenanalyse für ein Dataset mit mehr als 1000 Variablen durch. Ich benutze R Studio und wenn ich die Zusammenfassung benutze, um die kumulative Varianz der Komponenten zu sehen, kann ich nur die letzten paar hundert Komponenten sehen. Wie beschränke ich die Zusammenfassung, um nur die ersten 100 Komponenten zu zeigen?R - Limit-Ausgabe von summary.princomp
Antwort
Es ist ziemlich einfach print.summary.princomp
zu ändern (können Sie den ursprünglichen Code sehen stats:::print.summary.princomp
durch Eingabe), dies zu tun:
pcaPrint <- function (x, digits = 3, loadings = x$print.loadings, cutoff = x$cutoff,n, ...)
{
#Check for sensible value of n; default to full output
if (missing(n) || n > length(x$sdev) || n < 1){n <- length(x$sdev)}
vars <- x$sdev^2
vars <- vars/sum(vars)
cat("Importance of components:\n")
print(rbind(`Standard deviation` = x$sdev[1:n], `Proportion of Variance` = vars[1:n],
`Cumulative Proportion` = cumsum(vars)[1:n]))
if (loadings) {
cat("\nLoadings:\n")
cx <- format(round(x$loadings, digits = digits))
cx[abs(x$loadings) < cutoff] <- paste(rep(" ", nchar(cx[1,
1], type = "w")), collapse = "")
print(cx[,1:n], quote = FALSE, ...)
}
invisible(x)
}
pcaPrint(summary(princomp(USArrests, cor=TRUE),
loadings = TRUE, cutoff = 0.2), digits = 2,n = 2)
Herausgegeben Um eine grundlegende Überprüfung für einen vernünftigen Wert für n
umfassen. Nun, da ich das getan habe, frage ich mich, ob es sich nicht lohnt, R Core als permanente Ergänzung vorzuschlagen; scheint einfach und mag nützlich sein.
Vielen Dank. Genau das, was ich brauchte. Dies macht Datamining-Anwendungen so viel einfacher. – user1209675
@joran: Ja, es ist eine Funktion, die es wert ist, dem R-Core Team IMO zu übergeben. – digEmAll
Sie können die Ladungen in Matrixform, Sie könnten die Matrix in eine Variable und dann Teilmenge speichern (a la matrix[,1:100]
) es, um die erste/Mitte/letzte n zu sehen. In diesem Beispiel habe ich head() verwendet. Jede Spalte ist eine Hauptkomponente.
head(
matrix(
prin$loadings,
ncol=length(dimnames(prin$loadings)[[2]]),
nrow=length(dimnames(prin$loadings)[[1]])
),
100)
habe ich versucht, diese und es scheint zu funktionieren: l = Beladungen (prin) l [1: 100]
- 1. R - Serialisieren von R-Modellen als JSON
- 2. R: Verschachtelung von `ifelse()`
- 3. R Programmieren von Rückkehrpositionen
- 4. Rückgabeplot von R-Funktion
- 5. Verknüpfen von R-Paketvignetten
- 6. Kompilierungsfehler von R-Paket
- 7. Verknüpfung von R aus Excel - DCOM? R für Excel hinzufügen?
- 8. Wie kann R-Studio R-Pakete von lokalen Repo zugreifen
- 9. Run R Skript mit dem Start von R
- 10. R - Elemente von R Ausgabe in Textdateien erfassen
- 11. Zugriff/Extrakt R Hilfe von Nicht-R-Skript (zB Python)
- 12. Aufruf von Statafunktionen aus R
- 13. Kann readLines innerhalb von R
- 14. Erstellen von Shapefiles in R
- 15. Verwenden von Daten in R
- 16. Funktion von qnorm() in R
- 17. Schützen von Funktionsnamen in R
- 18. Lösen von Gleichungssystemen in R
- 19. Einrichten von R-Studio Aussehen
- 20. R Auswahlmatrix von 4 Koordinaten
- 21. Ausbreiten von facettierten Parzellen (R)
- 22. Anaconda R von Ubuntu entfernen
- 23. SAVE-Gruppen Clustering von r
- 24. R: Beschleunigung "Gruppe von" Operationen
- 25. Klärung von L in R
- 26. Plotten von Halbkreisen in R
- 27. Union von Datenrahmen in R
- 28. Python Äquivalent von R mclapply()
- 29. Verschachteln von Ausgabegeräten in R?
- 30. Installationsprobleme von causalimpact in R
Können Sie ein kleines reproduzierbares Beispiel nennen? – digEmAll
@digemall Nicht wirklich, der Datensatz ist riesig. Ich laufe nur: prin <- princomp (train [c (2: 1777)]) Zusammenfassung (prin) Wenn ich das mache, zeigt es die Informationen für alle 1776 Hauptkomponenten an. Ich brauche nur die ersten 100 oder so. – user1209675
Ja, natürlich nicht den vollen Code. Ich meinte ein kleines Beispiel, um genau Ihre Schritte zu verstehen. Anyway @joran hat den Punkt;) – digEmAll