2017-06-22 5 views
0

データセットから価格と車種を検索する関数を作成しようとしています。どちらもデフォルトの引数を持ちます。価格については、これは簡単です。しかし、車のタイプ(私は要因として)、私はすべての要因をデフォルトとして設定する方法を見つけることができません。R - いくつかの因子レベルを関数のデフォルト引数として設定しました

car_typeに何も設定しないと、可能なすべての車種が返されます。

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() 

"search()"は、0から1000の価格とすべての可能な車種の間のすべての車を返すようにします。私はベクトルとリストを使ってみましたが、何の不運もありませんでした。

+0

私はあなたがちょうど二重引用符であなたが望む車である 'default'は、 'car_type =' default''を設定することができると思います。また、 'subset_data'代入にカンマが必要です。それ以外の場合は、行の代わりに列をサブセット化しようとします。 'subset_data < - auto [(price <= end_price&price> start_price&vehicleType == car_type) ']' –

+0

この関数は' data.table'パッケージをロードする必要がありますか? –

+0

@ NathanWerthはい、そうです – pkg

答えて

1

これに通常対処する方法は、デフォルトでNULLを使用し、それを関数で処理することです。

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

特定の車種の検索はどのように見えますか?検索(ブランド== 'セダン')なんか? – pkg

+0

質問を正しく理解していれば、 'search(car_type =" sedan ")'。 'autos'に' brand'という名前の別の列がある場合、関数を作るときにそれを引数として追加する必要があります。 –

関連する問題