我希望共享一个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/