2016-04-05 7 views
1

Ich habe einen Datenrahmen mit> 100 Spalten, die alle INTs sind.R - Problemschleife über einen Datenrahmen und Faktorisierung von Variablen

Ich habe einige Spalten subsetted, die ich Faktorisierung möchte, dass Sie mir eine ANOVA führen, sagen

my_variables_list = headers[grep('independent', headers)] 

Nun möchte ich gerne all diese Variablen zu geschleift und faktorisieren:

for (i in my_variables_list) { 
    df$i = as.factor(df$i) 
} 

Dies funktioniert jedoch nicht - es wird keine Fehlermeldung zurückgegeben, aber es werden auch keine Änderungen am df vorgenommen. Ähnlich, wenn ich versuche, eine einzelne Zeile davon auszuführen, schlägt es auch fehl.

df$my_variables_list[10] <- as.factor(df$my_variables_list[10]) 
+0

könnten Sie einige Ihrer Daten liefern .Rahmen? –

Antwort

1

Sie sollten die [] Operatoren verwenden, um Ihre Datenrahmen innerhalb der for-Schleife der Teilmenge:

for (i in my_variables_list) { 
    df[,i] = as.factor(df[,i]) 
} 
+0

Hervorragend! :) Vielen Dank –

1

Ein Beispiel auf iris die Schleife zu vermeiden. Wir freuen zunächst für die Rüttler Sepal oder Sepal in der COLNAMES von iris, wandeln dann die Spalten mit lapply

my_variables_list = grep('Petal|Sepal', colnames(iris)) 
iris[, my_variables_list] <- lapply(iris[, my_variables_list], as.factor) 

oder auf Sie Faktor data.frame:

df[,my_variables_list] <- lapply(df[, my_variables_list], as.factor) 
Verwandte Themen