2017-06-22 4 views
0

Ich versuche eine Funktion zu erstellen, die nach Preis und Fahrzeugtyp aus einem Datensatz sucht. Beide haben Standardargumente. Für den Preis ist das einfach genug. Aber für den Autotyp (den ich als Faktoren habe) kann ich keine Möglichkeit finden, alle Faktoren als Standard zu setzen.R - setze mehrere Faktorstufen als Standardargument in einer Funktion

Das Ziel ist, dass, wenn Sie nichts in car_type setzen, es alle möglichen Autotypen zurückgibt.

search <- function(start_price = 0, end_price = 1000, car_type = ???){ 
    subset_data <- auto[price <= end_price & 
         price > start_price & 
         vehicleType == car_type] 
    return(subset_data) 
} 
search() 

Damit die „Suche()“ gibt alle Autos zwischen den Preisen von 0 bis 1000 und von allen möglichen Fahrzeugtypen. Ich habe versucht, mit Vektoren und Listen, ohne Glück.

+0

Ich denke, Sie können einfach 'car_type =' default'', wo 'Standard' ist das Auto, das Sie wollen mit den einfachen oder doppelten Anführungszeichen setzen. Außerdem benötigen Sie ein Komma in der 'subset_data'-Zuweisung, andernfalls wird es versuchen, Spalten anstelle von Zeilen zu unterteilen. Es sollte 'subset_data <- auto [(Preis <= Preis/Preis> Start_Preis & FahrzeugTyp == Auto_Typ),]' –

+0

Wird für diese Funktion das 'data.table' Paket geladen? –

+0

@NathanWerth Ja, ich glaube schon – pkg

Antwort

1

Der übliche Weg, dies zu erreichen, ist NULL als Standard zu verwenden und das in der Funktion zu behandeln.

search <- function(start_price = 0, end_price = 1000, car_type = NULL){ 
    if (is.null(car_type) { 
    car_type <- levels(auto$vehicleType) 
    } 
    subset_data <- auto[price <= end_price & 
         price > start_price & 
         vehicleType %in% car_type] 
    return(subset_data) 
} 
+0

Wie würde eine Suche nach einem bestimmten Autotyp aussehen? Suche (Marke == "Limousine") oder so ähnlich? – pkg

+0

Wenn ich deine Frage richtig verstehe: 'search (car_type =" limousine ")'. Wenn in 'autos' eine andere Spalte mit dem Namen' brand' vorhanden ist, müssten Sie diese als Argument hinzufügen, wenn Sie die Funktion ausführen. –

Verwandte Themen