2017-01-15 2 views
0

Ich möchte alle nicht-Faktoren von einem Datenrahmen d3 und sie in der Tabelle mGemeinsame Nutzung „für“ und „wenn“ Operatoren in R

for (i in 1:12) { 
    m<-as.data.frame(matrix(100,nrow = nrow(d3),ncol = ncol(d3))) 
    if (!is.factor(d3[,i])){ 
    m[,i]<-d3[,i] 
    } 
    } 

Für bestimmte Werte von setzen sammeln i (zB wenn ich = 2), bekomme ich was ich will. Aber Schleifen funktioniert nicht. Wo mache ich oben im Code einen Fehler?

+0

Sie können mit der Funktion ** mutate_if ** aus dem ** dplyr ** -Paket experimentieren. Ähnliches sollte wie folgt funktionieren: m <- d3 %>% dplyr :: mutate_if (! Is.factor)%>% as.table() ** – Ferdi

+0

Bitte, [editieren] Sie Ihre Frage und beschreiben Sie, was Sie mit "aber Schleifen" meinen nicht arbeiten". – Uwe

+0

und die Bereitstellung der 'd3' Daten wäre eine große Hilfe. – SymbolixAU

Antwort

4

Sie erstellen m jedes Mal durch die Schleife; es sollte draußen sein.

m <- as.data.frame(matrix(100, nrow = nrow(d3), ncol = ncol(d3))) 
for (i in 1:12) { 
    if (!is.factor(d3[, i])) { 
    m[, i] <- d3[, i] 
    } 
} 

Aber Sie sollten wirklich nur vektorisiert Operationen verwendet werden, alles auf einmal zu tun.

nonf <- !sapply(d3, is.factor) 
m[, nonf] <- d3[, nonf] 
Verwandte Themen