Я пытаюсь использовать combn, чтобы разделить группу из n = 20 различных единиц на 3 группы неравного размера - 4, 6 и 10. Затем я пытаюсь проверить значения, которые должны быть вместе в группе -если один элемент из пары существует в группе, то другой также должен быть в группе.Если кто-то не в группе, то ни один не должен быть в группе.Таким образом, я хотел бы оценить группы, чтобы найти все возможные допустимые решения, где правила верны.
x <- letters[1:20]
same_group <- list(
c("a", "c"),
c("d", "f"),
c("b", "k", "r")
)
combinations_list <- combn(x, 4, simplify = F)
validate_combinations <- function(x) all(c("a", "c") %in% x) | !any(c("a", "c") %in% x)
valid_combinations <- keep(combinations_list, validate_combinations)
Таким образом, я хотел бы объединить -> уменьшать каждую группу доУ меня есть список всех допустимых комбинаций.Я не уверен, как объединить комбинации комбинации, список валидированных_комбинаций и группу same_group, чтобы проверить все "правила" same_group относительно комбинаций в таблице.Самое большее, что я могу получить, - это проверить одну комбинацию c ("a", "c"), которая при запуске против keep (комбинаций_листов, validate_combination) действительно дает мне желаемый результат.
Думаю, однаждыЯ могу сделать это, затем я могу использовать невыбранные значения в другой функции combn для группы из 6 и группы из 10.