Я пытаюсь создать функции, которые оценивают числа и добавляют их в категорию, зависящую от заданных критериев.
Я написал «глупую» функцию с большим количеством повторений и строк, которая может решить задачу впростой случай:
# Findgroup (Everything manually typed out)
# Purpose of function:
#If 1 or 2: output A
#If 3 or 4: output B
#If 5 or 6: output random A/B (bonus if this can be balanced equally over the dataset)
# Else output "error"
findGroup <- function(x){ if (x == 1) {
"A"
} else if (x == 2) {
"A"
} else if (x == 3) {
"B"
} else if (x == 4) {
"B"
}else if (x == 5) {
sample(c("sA","sB"),1)
}else if (x == 6) {
sample(c("sA","sB"),1)
} else {
"Error"
}}
# Brief test: All matches expectations
findGroup(1) # Returns A
findGroup(3) # Returns B
findGroup(5) # Samples
findGroup(7) # Returns Error
Это нормально, если бы мне пришлось оценить несколько чисел. Но что мне делать, если список чисел намного сложнее? Я попытался написать функцию, которая решает это в меньшем количестве строк, но результат не работает:
# Findgroup new
# Purpose of function:
#If 2:8: output A
#If 10:16: output B
#If 1,9: output random A/B (bonus if this can be balanced equally)
findGroupNew <- function(x){ if (x == 2|3|4|5|6|7|8) {
"A"
} else if (x == 10|11|12|13|14|15|16) {
"B"
} else if (x == 1||9) {
sample(c("sA","sB"),1)
} else {
"Error"
}}
# Brief test: All return A!!!
findGroupNew(1) # Should sample
findGroupNew(3) # Should Return A
findGroupNew(11) # Should Return B
findGroupNew(17) # Should Return Error
Это может быть глупой ошибкой, такой как не использование правильного знака для ИЛИ, но попытка решениятакие как использование ||и & не был успешным.
Я надеюсь, что есть быстрое решение этой проблемы, и будем благодарны за ваш отзыв.