r - R 中的简单组合

标签 r combinatorics

我希望共享一个 R 函数,用于查找单个向量元素之间所有可能的唯一无向组合:

combi <- function(vec1)
{
  si <- length(vec1)
  first <- rep(vec1, (si-1):0)
  secR <- rev(vec1)
  second <- secR[sequence(1:(si-1))]
  second <- rev(second)
  combi <- matrix(cbind(first, second), ncol = 2)
  return(combi)
}

并询问是否有更简单的方法来做到这一点? (我需要结果在 2 列矩阵中)。

最佳答案

嗯,有一个内置的 combn功能:

t(combn(vec1,2))

不过,你的看起来更快,也许是因为 combn试图解决一个更普遍的问题(??):
> library(rbenchmark)
> v <- 1:20
> benchmark(combi(v),t(combn(v,2)))
            test replications elapsed relative user.self sys.self
1       combi(v)          100   0.005      1.0     0.004    0.000   
2 t(combn(v, 2))          100   0.044      8.8     0.040    0.004   

关于r - R 中的简单组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8051278/

相关文章:

r - 选择允许轻微拼写错误的特定字符串

R 按组将最后第 n 个值替换为 NA

r - 插入符号中 KNN 的自定义参数调整

java - 如何即时进行组合学

c++ - 划分4D笛卡尔网格进行并行处理

regex - 如何使用 R 解析 sysmon 文件以提取某些信息?

r - 打印 <0.001 的 p 值

python - 以平衡权重的 block 拆分列表

algorithm - 没有镜像或循环重复的独特排列

python - 可替换多个可迭代对象或与订单无关的产品的高效组合