2017-06-22 56 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'的列,那么在创建函数时你必须添加它作为参数。 –