问题标签 [combn]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
248 浏览

r - 从 R 中的所有可能组合中提取特定组合

给定以下长度向量n=10

假设我们要将运算符&应用于向量元素的所有可能组合。那是:

但是,我们知道&operator 的结果只有在两个值都为真时才为真1,因此我们可以用更聪明的方式来做。实际上, 的结果combn是一个长度为的向量,45只有一个 的值,1其余的只是0

现在的问题是,我们如何在1不应用combn自身的情况下提取唯一的位置?一旦我们得到它,我们就可以简单地生成结果如下:

index质疑的立场在哪里。

0 投票
1 回答
467 浏览

r - 在R中通过ID获取唯一组合(combn)

我尝试通过每个 ID 获得唯一的组合,我一直收到错误,它不会扩展 ID。

每个 ID ID1 (A,B,C,E,F) 的输出没有给出足够的组合,它只给出了 5 个组合。反正有解决问题吗?输出我想要的ID1,有10个组合(ABC)(ACF)(ABF)(ABE)(BCE)(BCF)(CAB)(CAE)(CAF)(ECF)

0 投票
0 回答
61 浏览

r - 两组之间的R逻辑组合

我正在寻求有关 R 组合的一些帮助。

简而言之,我有一个由三个人 (I) 和一些我有兴趣研究的标记 (M) 组成的小组。对于每个标记,每个人要么是阳性的,要么是阴性的。一些标记在该组中的两个人中是阳性的,而一些标记在该组中的三个人中是阳性的。

我有兴趣找到组中每个成员之间存在的所有标记组合,使得每个标记在任何特定分组中只研究一次。

我的首选输出是一个长数据框,例如:

每个选项都是该组三个成员中每个成员之间阳性标记的独特分布。这相当于一个宽数据框,例如:

主要挑战是(i)所有标记必须在每个选项中表示,并且(ii)每个标记在每个选项中仅应研究一次(在该组中的一个人中)。不必在每个选项中都代表所有个人。

我怀疑解决方案将包括以下关键步骤:

  • 生成分配给三个组成员中每个成员的所有可能的标记组合,而不会在个体之间重复标记。
  • 删除正在测试的标记在分配给它的特定个人中不存在 (TRUE) 的组合。
  • 如果在第一步中尚未成功实现,则删除组合中存在重复标记的组合。

我真的为此苦苦挣扎,并花了一整天时间使用 grid.expand 和 combn 编写了一个非常复杂的基于循环的方法,但没有成功。它过于复杂和混乱,无法包括在这里。任何帮助表示赞赏。

0 投票
1 回答
195 浏览

r - 创建具有许多项目的所有项目组合

我想有各种项目的可能组合。想象参与者将三个项目之一带到一个活动中,我想知道不同的组合(参与者的顺序无关紧要)。例如,

为我提供了 5 个参与者所需的组合数据框。

现在,假设我有 50 名参与者。然后:

这里描述了这个问题,并且由于 R 中向量大小的限制而出现。所以,这似乎expand.grid是没有问题的。

有没有其他方法可以得到我想要的输出R?据我所知,R从 3.0 版本开始就支持长向量,所以看到它们还没有实现我有点惊讶。任何指向替代方案的指针都非常感谢!

0 投票
2 回答
325 浏览

r - 从 5 列中找到 3 行的所有组合的所有总和

我已经使用 .CVS 文件加载了一个表

这给了我:

我想找到每个月(行)的 5 个数字中任意 3 个的所有组合。我尝试combn根据我在这里找到的答案使用该功能:

但这给了我错误-

“FUN(x[a], ...) 中的错误:‘x’必须是数字”

接下来我尝试分别命名每一列

然后使用:

我怀疑有一种更简单的方法可以直接使用 .CVS 文件中的列标题来执行此操作,但我被卡住了。

0 投票
1 回答
310 浏览

r - 与多对整数向量相交

我有list一个integer vector

(实际上它有 1000 个元素长,向量元素的平均长度为 100 个)

我想计算所有' 元素对与其对应的/之间的intersectionover 。unionlhypergeometricfisher.test p-value

这是我目前正在做的事情:

  1. 首先,我生成一个矩阵来存储l其所有元素对的索引:

    /li>

这部分非常快,可以使用combnPrim更快

  1. 然后我运行这个函数来获得我想要的输出:

    res.df <- do.call(rbind, lapply(1:nrow(idx.mat), function(i){ gi.length <- length(l[[idx.mat[i,1]]]) gj.length <- length(l[[idx.mat[i,2]]]) set.diff.1 <- length(setdiff(l[[idx.mat[i,1]]],l[[idx.mat[i,2]]])) set.diff.2 <- length(setdiff(l[[idx.mat[i,2]]],l[[idx.mat[i,1]]])) gi.gj.inter <- length(intersect(l[[idx.mat[i,1]]],l[[idx.mat[i,2]]])) gi.gj.union <- length(unique(c(l[[idx.mat[i,1]]],l[[idx.mat[i,2]]]))) p.value <- fisher.test(matrix(c(gi.length+gj.length- gi.gj.union,set.diff.1,set.diff.2,gi.gj.inter),nrow=2),alternative="greater")$p.value return(data.frame(gi=names(l)[idx.mat[i,1]], gj=names(l)[idx.mat[i,2]], gi.gj.inter=gi.gj.inter, gi.gj.union=gi.gj.union, gi.gj.iou=gi.gj.inter/gi.gj.union, gi.gj.iou.p.val=p.value, stringsAsFactors=F)) }))

但是对于我的实际数据大小,这有点慢。

知道如何更快地实现这一目标吗?

0 投票
1 回答
157 浏览

r - 获取分组数据的组合

请告诉我正确的'r'方式。

我有 5 个地点。每天每个位置都会有 0 或 2 个值。我想按天获得可能的位置组合。下面的代码有效,但我认为它不是很好。有一个更好的方法吗?我尝试了许多不同的应用、聚合、熔化、铸造等变体。但这就是我要做的全部工作。

请注意,在我的示例数据中,每个位置每天都有 2 个读数。但实际上,一个位置每天会有 0 或 2 个读数,因此每天的组合可能会有所不同。

我查看了许多其他 SO 答案,但找不到适合我的情况的答案。

谢谢您的帮助。

期望的输出

如果当天报告了位置 1、2 和 3,那么在那一天我需要以下所有组合:

解决方案

在 R 的组合中找到了一个解决方案:

这不是一个完整的解决方案,因为它只解决组合中的 n 个项目,而不是 n 的所有可能性。但这与下面的答案应该非常接近。

0 投票
1 回答
284 浏览

r - 如何使用 R 在向量中创建所有组合

我有一个包含 n 个观察值的向量。现在我需要用这 n 个元素创建所有可能的组合。例如,我的向量是

在我的输出中,组合应该是这样的,

我怎样才能得到这个输出?

提前致谢。

0 投票
1 回答
260 浏览

r - 格式化 R 组合输出

作为一个简短的例子,在运行时combn(1:5,2),我得到一个 2 行 10 列的矩阵。我知道我可以将输出矩阵转换为数据框,但是否有可能(内部的任何选项)以2列和10行的垂直数据框combn的形式轻松输出?谢谢。

0 投票
2 回答
629 浏览

r - 使用 combn 的最小值的所有组合的列表

这是我的数据:

如何找到大于 25 的第 3 列的所有组合?我正在努力如何使用 combn 功能,因为帮助功能似乎不太直观。