2017-03-08 9 views
-2

I auch mit dem gleichen Problem, in der Hauptkomponentenanalyse in R.The gleicher Fehlermeldung angezeigt wird, am Markt:kann nicht die Hauptkomponentenanalyse in r berechnen

Fehler in cov.wt (z): ‚x 'muss nur endliche Werte enthalten

Ich habe Ihre Antworten dafür überprüft, aber es funktioniert immer noch nicht. Der Benutzer2662565 hatte das gleiche Problem.

Dies ist der Programmcode habe ich verwendet:

***data<-read.csv(file.choose(),header=T) 
data  
#Calculate number of rows and col 
rows<-length(data[,1]) 
rows 
cols<-length(data[1,]) 
cols 
#Remove header and save each column to a matrix 
for (i in 1:rows){ 
    for (j in 1:cols){ 
     if(data[i,j]=="NA"){ 
     data[i,j]="0" 
     } 
    } 
} 
pca_a<-princomp(data, cor=True, covmat=NULL, scores=TRUE) 
#Print scree plot 
require(graphics) 
plot(pca_a) 
#plot pca 
biplot(pca_a)*** 
+0

Bitte geben Sie ein [reproduzierbares Beispiel] an (http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example). – Jean

+2

Wir haben keine Ahnung, wie Ihre Daten aussehen. Führen Sie 'str (data)' aus und kopieren Sie die Ausgabe. Klicken Sie bei Ihrer Frage auf "Bearbeiten" und fügen Sie das Ergebnis ein. –

+1

Tun Sie Ihrem zukünftigen Selbst einen Gefallen und hören Sie auf, 'file.choose()' zu verwenden. Werden Sie sicher wissen, in welcher Datei Sie eine Woche, einen Monat oder ein Jahr wählen können? –

Antwort

3

Zuerst Sie rows<-length(data[,1]) mit rows <- nrow(data) und cols<-length(data[1,]) mit cols <- ncol(data) ersetzen kann.

Zweitens sollten Sie ein reproduzierbares Beispiel bereitstellen, indem Sie einen Spieldatensatz erstellen. Ich kann nicht die gleichen Daten verwenden wie Sie, weil data<-read.csv(file.choose(),header=T) versucht, eine Datei auf meinem Computer auszuwählen und Ihre Datendatei nicht auf meinem Computer ist. Können Sie ein Spielzeug-Dataset wie data <- matrix(rnorm(100), nrow = 10, ncol = 10) erstellen und überprüfen, ob Ihr Code funktioniert?

Drittens funktioniert princomp nicht, wenn einer der Werte der Daten nicht numerisch (z. B. Zeichen) ist. In Ihrem Code vergeben Sie data[i, j] <- '0', was bedeutet, dass Sie diesen Datenwert eine Zeichenfolge der Ziffer 0, nicht die tatsächliche Zahl 0. Sie können Ihren Fehler verhindern, indem Sie sicherstellen, dass alle Werte von data numerische Werte sind.

+0

Ich habe meine Befehle ersetzt. Und meine Daten hatten Zeichen. Jetzt habe ich es entfernt und es hat funktioniert. Danke –

Verwandte Themen