问题标签 [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.
r - 从 R 中的所有可能组合中提取特定组合
给定以下长度向量n=10
:
假设我们要将运算符&
应用于向量元素的所有可能组合。那是:
但是,我们知道&
operator 的结果只有在两个值都为真时才为真1
,因此我们可以用更聪明的方式来做。实际上, 的结果combn
是一个长度为的向量,45
只有一个 的值,1
其余的只是0
。
现在的问题是,我们如何在1
不应用combn
自身的情况下提取唯一的位置?一旦我们得到它,我们就可以简单地生成结果如下:
index
质疑的立场在哪里。
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)
r - 两组之间的R逻辑组合
我正在寻求有关 R 组合的一些帮助。
简而言之,我有一个由三个人 (I) 和一些我有兴趣研究的标记 (M) 组成的小组。对于每个标记,每个人要么是阳性的,要么是阴性的。一些标记在该组中的两个人中是阳性的,而一些标记在该组中的三个人中是阳性的。
我有兴趣找到组中每个成员之间存在的所有标记组合,使得每个标记在任何特定分组中只研究一次。
我的首选输出是一个长数据框,例如:
每个选项都是该组三个成员中每个成员之间阳性标记的独特分布。这相当于一个宽数据框,例如:
主要挑战是(i)所有标记必须在每个选项中表示,并且(ii)每个标记在每个选项中仅应研究一次(在该组中的一个人中)。不必在每个选项中都代表所有个人。
我怀疑解决方案将包括以下关键步骤:
- 生成分配给三个组成员中每个成员的所有可能的标记组合,而不会在个体之间重复标记。
- 删除正在测试的标记在分配给它的特定个人中不存在 (TRUE) 的组合。
- 如果在第一步中尚未成功实现,则删除组合中存在重复标记的组合。
我真的为此苦苦挣扎,并花了一整天时间使用 grid.expand 和 combn 编写了一个非常复杂的基于循环的方法,但没有成功。它过于复杂和混乱,无法包括在这里。任何帮助表示赞赏。
r - 创建具有许多项目的所有项目组合
我想有各种项目的可能组合。想象参与者将三个项目之一带到一个活动中,我想知道不同的组合(参与者的顺序无关紧要)。例如,
为我提供了 5 个参与者所需的组合数据框。
现在,假设我有 50 名参与者。然后:
这里描述了这个问题,并且由于 R 中向量大小的限制而出现。所以,这似乎expand.grid
是没有问题的。
有没有其他方法可以得到我想要的输出R
?据我所知,R
从 3.0 版本开始就支持长向量,所以看到它们还没有实现我有点惊讶。任何指向替代方案的指针都非常感谢!
r - 从 5 列中找到 3 行的所有组合的所有总和
我已经使用 .CVS 文件加载了一个表
这给了我:
我想找到每个月(行)的 5 个数字中任意 3 个的所有组合。我尝试combn
根据我在这里找到的答案使用该功能:
但这给了我错误-
“FUN(x[a], ...) 中的错误:‘x’必须是数字”
接下来我尝试分别命名每一列
然后使用:
我怀疑有一种更简单的方法可以直接使用 .CVS 文件中的列标题来执行此操作,但我被卡住了。
r - 与多对整数向量相交
我有list
一个integer
vector
:
(实际上它有 1000 个元素长,向量元素的平均长度为 100 个)
我想计算所有' 元素对与其对应的/之间的intersection
over 。union
l
hypergeometric
fisher.test
p-value
这是我目前正在做的事情:
首先,我生成一个矩阵来存储
/li>l
其所有元素对的索引:
这部分非常快,可以使用combnPrim更快
然后我运行这个函数来获得我想要的输出:
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)) }))
但是对于我的实际数据大小,这有点慢。
知道如何更快地实现这一目标吗?
r - 获取分组数据的组合
请告诉我正确的'r'方式。
我有 5 个地点。每天每个位置都会有 0 或 2 个值。我想按天获得可能的位置组合。下面的代码有效,但我认为它不是很好。有一个更好的方法吗?我尝试了许多不同的应用、聚合、熔化、铸造等变体。但这就是我要做的全部工作。
请注意,在我的示例数据中,每个位置每天都有 2 个读数。但实际上,一个位置每天会有 0 或 2 个读数,因此每天的组合可能会有所不同。
我查看了许多其他 SO 答案,但找不到适合我的情况的答案。
谢谢您的帮助。
期望的输出
如果当天报告了位置 1、2 和 3,那么在那一天我需要以下所有组合:
解决方案
在 R 的组合中找到了一个解决方案:
这不是一个完整的解决方案,因为它只解决组合中的 n 个项目,而不是 n 的所有可能性。但这与下面的答案应该非常接近。
r - 如何使用 R 在向量中创建所有组合
我有一个包含 n 个观察值的向量。现在我需要用这 n 个元素创建所有可能的组合。例如,我的向量是
在我的输出中,组合应该是这样的,
我怎样才能得到这个输出?
提前致谢。
r - 格式化 R 组合输出
作为一个简短的例子,在运行时combn(1:5,2)
,我得到一个 2 行 10 列的矩阵。我知道我可以将输出矩阵转换为数据框,但是否有可能(内部的任何选项)以2列和10行的垂直数据框combn
的形式轻松输出?谢谢。
r - 使用 combn 的最小值的所有组合的列表
这是我的数据:
如何找到大于 25 的第 3 列的所有组合?我正在努力如何使用 combn 功能,因为帮助功能似乎不太直观。