首页 > 解决方案 > 在 R 中创建用户定义的函数,其中包含一个列表,而不仅仅是一个输入

问题描述

我想创建可以使用多个输入进行测试的函数,例如下面的数字列表是我的代码。我不仅想测试几个输入,而且我不想在函数参数中做同样的事情。

grads<-function((for (X in 0:100)))
  
if (x<=50){
  "Fail"
}else if (x<=70){
  "Good"
  
}else if (x<=80){
  "V Good"
} else {
  "Execellent"
}

grads(95,60,77,33)

这是我得到的错误

Error in grads(95, 60, 77, 33) : unused arguments (60, 77, 33)

标签: rfunction

解决方案


我们可以fcase使用data.table

library(data.table)
grads <- function(x) {
     data.table::fcase(x <= 50, "Fail",
                       x <= 70, "Good",
                       x <= 80, "Very Good",
                       default = "Excellent")
}

-测试

grads(c(95,60,77,33))
[1] "Excellent" "Good"      "Very Good" "Fail"  

或使用findIntervalfrombase R

grads <- function(x)  {
      c("Fail", "Good", "Very Good", "Excellent")[findInterval(x,
       c(0, 50, 70, 80, 100))]
}
grads(c(95,60,77,33))
[1] "Excellent" "Good"      "Very Good" "Fail"    

推荐阅读