2017-06-22 46 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() 

以便「搜索()」返回0和1000之間的所有汽車以及所有可能的汽車類型。我嘗試過使用向量和列表,沒有任何運氣。

+0

我想你可以只設置'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

如果我正確理解你的問題:'搜索(car_type =「轎車」)'。如果在'autos'中有另一個名爲'brand'的列,那麼在創建函數時你必須添加它作爲參數。 –

相關問題