首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用purrr评估来自combn的组合时遇到问题

使用purrr评估来自combn的组合时遇到问题
EN

Stack Overflow用户
提问于 2019-07-11 22:08:32
回答 1查看 72关注 0票数 0

我尝试使用combn将一组n= 20个不同的单元划分为3个大小不等的组-- 4、6和10。然后,我尝试验证必须在一个组中同时存在的值--如果该对中的一个元素存在于该组中,则另一个元素也应该在该组中。如果一个不在组中,那么两个都不应该在组中。以这种方式,我想评估这些组,以便找到所有可能的有效解决方案,其中规则是真的。

代码语言:javascript
复制
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)

通过这种方式,我想合并->,reduce,每个组,直到我有了所有有效组合的列表。我不确定如何组合combinations_list、validate_combinations和same_group来对照表格中的组合检查所有same_group“规则”。我最多只能检查一个组合c("a","c"),当对keep(combinations_list,validate_combinations)运行时,它确实给出了我想要的输出。

我认为一旦我可以这样做,我就可以在另一个combn函数中对6组和10组使用未挑选的值。

EN

回答 1

Stack Overflow用户

发布于 2019-07-12 15:02:43

我们可以更改函数以接受变量组

代码语言:javascript
复制
validate_combinations <- function(x, group) all(group %in% x) | !any(group %in% x)

然后,对于每个group子集,满足validate_combinationscombinations_list

代码语言:javascript
复制
lapply(same_group, function(x)  combinations_list[
       sapply(combinations_list, function(y) validate_combinations(y, x))])


#[[1]]
#[[1]][[1]]
#[1] "a" "b" "c" "d"

#[[1]][[2]]
#[1] "a" "b" "c" "e"

#[[1]][[3]]
#[1] "a" "b" "c" "f"

#[[1]][[4]]
#[1] "a" "b" "c" "g"

#[[1]][[5]]
#[1] "a" "b" "c" "h"

#[[1]][[6]]
#[1] "a" "b" "c" "i"

#[[1]][[7]]
#[1] "a" "b" "c" "j"

#[[1]][[8]]
#[1] "a" "b" "c" "k"
#......
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56991167

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档