r - 在 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)
解决方案
我们可以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"
或使用findInterval
frombase 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"
推荐阅读
- python - 如何选择类别概率的最佳阈值?
- docker - 在 docker build 期间是否可以在 ONBUILD 之前插入步骤?
- java - 从 Java 客户端获取 Swagger JSON 调用主体
- f# - 大量的 Seq.find 崩溃 (int64)
- c# - 立即取消任务
- css-animations - 有没有办法将两个 amp-animations 添加到单个 div ?
- angular - 在@ngrx/effects 中 http 调用之前的调度操作
- sql-server - 有人可以帮我如何使用存储过程在不同的表中添加字段
- javascript - 对具有相同上下文的 2 个对象调用 JSON.stringify(obj) 是否总是得到相同的字符串?
- visual-studio-code - 在 VS 代码中将光标从编辑器切换到文件资源管理器,反之亦然