我正在编写一个具有器具参数的函数,但实际上使用下面的数据框返回以最高成本销售的品牌名称
utensil cost brand
1 pen 1 a
2 pencil 2 b
3 pen 5 c
4 pen 6 d
5 pencil 2 e
答案 0 :(得分:0)
这是您提供的数据:
data <- structure(list(utensil = structure(c(1L, 2L, 1L, 1L, 2L), .Label =
c("pen",
"pencil"), class = "factor"), cost = c(1L, 2L, 5L, 6L, 2L), brand =
structure(1:5, .Label = c("a",
"b", "c", "d", "e"), class = "factor")), .Names = c("utensil",
"cost", "brand"), row.names = c(NA, -5L), class = "data.frame")
你不需要这个功能,但是如果你坚持这个,这个功能需要data.frame和器具,并回赠最昂贵的品牌。我这样构建它的原因是你可以实际遵循流程,然后可能编写自己的代码。否则,提到的d.b是在r。
中有效(更好)的方法maxcost = function(df, ut)
{
filtered <- subset(df, df$utensil == ut)
brand_df <- filtered[which.max(filtered$cost),]
brand <- as.character(brand_df[,3])
return(brand)
}
这是一个测试:
>maxcost(df, "pen")
[1] "d"
答案 1 :(得分:0)
你可以这样做
{{1}}
答案 2 :(得分:0)
此功能可以解决您的问题
dados = data.frame(utensil = c('pen', 'pencil', 'pen', 'pen', 'pencil'),
cost = c(1,2,5,6,2),
brand = c('a','b','c','d','e'))
verify = function(utensil, dados){
selected = dados[dados$utensil == utensil,]
result <- as.character(selected[which.max(dados[dados$utensil == utensil, 'brand']),'brand'])
return(result)
}