Ich versuche einen R-Datenrahmen zu erstellen, in dem einige Spalten als Faktoren und andere als Strings behandelt werden.mix `stringsAsFactors` im Dataframe
fruits <- data.frame(fruit = character(), descr = character())
fruits <- rbind(fruits, data.frame(fruit = "apple", descr = "jjrkgnser"))
fruits <- rbind(fruits, data.frame(fruit = "apple", descr = "aprtgh"))
fruits <- rbind(fruits, data.frame(fruit = "pear", descr = "akjreg"))
Hier werden beide Spalten als Faktoren behandelt, und ich am Ende für die descr
Spalten mit so viele Faktoren auf, als es Zeilen in dem fruits
Datenrahmen ist.
Wie kann descr
als String behandelt werden, aber fruit
als Faktoren? Wenn ich stringsAsFactors = FALSE
verwende, gilt es für alle Spalten!
bearbeiten
gehackt ich diese Lösung nicht so elegant:
fruits <- data.frame(fruit = factor(), path = character(), stringsAsFactors = FALSE)
fruits <- rbind(fruits, data.frame(fruit = factor("apple"), path = "jjrkgnser", stringsAsFactors = FALSE))
fruits <- rbind(fruits, data.frame(fruit = factor("apple"), path = "aprtgh", stringsAsFactors = FALSE))
fruits <- rbind(fruits, data.frame(fruit = factor("pear"), path = "akjreg", stringsAsFactors = FALSE))
Doing
> str(fruits)
'data.frame': 3 obs. of 2 variables:
$ fruit: Factor w/ 2 levels "apple","pear": 1 1 2
$ path : chr "jjrkgnser" "aprtgh" "akjreg"
die Anforderung passt. Gibt es eine nicer Weg?
verwenden Befehle '' und as.factor' as.character', falls erforderlich, separat für jede Spalte. – AntoniosK
Verwenden Sie 'rbind' als Teil eines Skripts? Warum nicht den gesamten Datensatz auf einmal erstellen? Etwas wie 'fruits <- data.frame (fruit = c (" Apfel "," Apfel "," Birne "), descr = I (c (" jjrkgnser "," aptgh "," akjreg "))). Ihr Code ist sowohl zu kompliziert als auch ineffizient, da er Objekte vergrößert, ohne vorher Speicher zuzuweisen. –
@AntoniosK Würden Sie das als Antwort posten? Ich kann nicht herausfinden, wie. –