Fehler in svd(x, nu = 0) : 0 Maße Abmessungen
Ich versuche zu tun, PCA auf den Daten-frame mit 5000 Spalten und 30 Zeilen
Sample <- read.table(file.choose(), header=F,sep="\t")
Sample.scaled <- data.frame(apply(Sample,2,scale))
pca.Sample <- prcomp(Sample.scaled,retx=TRUE)`
Habe den Fehler
Error in svd(x, nu = 0) : infinite or missing values in 'x'
sum(is.na(Sample))
[1] 0
sum(is.na(Sample.scaled))
[1] 90
Versuchte zu ignorieren, alle na-Werte mithilfe der folgenden
pca.Sample <- prcomp(na.omit(Sample.scaled),retx=TRUE)
Welche gibt die folgende Fehlermeldung
Error in svd(x, nu = 0) : 0 extent dimensions
Gab es Berichte, dass na.Aktion erfordert Formel gegeben werden und daher versucht die unten
pca.Sample <- prcomp(~.,center=TRUE,scale=TRUE,Sample, na.action=na.omit)
Nun immer die folgende Fehlermeldung
Error in prcomp.default(x, ...) :
cannot rescale a constant/zero column to unit variance
Denke, dass könnte das problem werden, weil "Einer meiner Daten-Spalten konstant ist. Die Varianz einer Konstanten ist 0, und die Skalierung würde dann eine Division durch 0, was unmöglich ist."
Aber nicht sicher, wie Sie in Angriff zu nehmen. Jede Hilfe sehr geschätzt ....
Versuchen
Beachten Sie auch, dass
Danke für die Formatierung
is.finite(Sample)
statt is.na
. Auch, Lesen Sie in der als-Daten.Rahmen, konvertieren zu matrix-und zurück zu den Daten.Rahmen, sind Sie sicher, dass alle Ihre Spalten in Sample
numerisch sind (oder dass R
denkt, dass Sie sind). lapply(Sample, scale)
kann besser funktionieren.Beachten Sie auch, dass
?prcomp
bereits eine na.action=
parameter werden sollte na.omit
standardmäßig.Danke für die Formatierung
InformationsquelleAutor Tinu Thomas | 2012-11-12
Du musst angemeldet sein, um einen Kommentar abzugeben.
Beurteilung durch die Tatsache, dass
sum(is.na(Sample.scaled))
kommt als90
, wennsum(is.na(Sample))
war0
, wie es aussieht, habe drei Konstanten Spalten.Hier ist eine zufällig generierte (reproduzierbar) Beispiel, das gibt die gleichen Fehlermeldungen:
Könnten Sie versuchen, so etwas wie:
also
na.omit
auf dem transponieren, um loszuwerden, dasNA
Spalten und nicht als Zeilen.Wie über den Fall von unendlich vielen Werte?
InformationsquelleAutor pete
Negative infinity-Werte können ersetzt werden, nachdem eine log-Transformation als unten.
InformationsquelleAutor Joshua Burkhart