我正在尝试创建一个循环,在该循环中我可以在一个数据框中获得所有可能的组合。这样做的原因是我想稍后使用这些对来创建 lm()
和 adf.test()
稍后的。例如,我有一个数据框如下:
df <- as.data.frame(cbind(1, 2, 3, 4))
.
由此我想得到所有可能的组合:
pairs <- as.data.frame(cbind(c(1, 1, 1, 2, 2, 3), c(2,3,4,3,4,4)))
.
为了实现这一点,我尝试了几种与此类似的 for 循环组合:
all_pairs = matrix(0, ((length(df)*(length(df)-1))/2), 2)
for (ij in 1:((length(df)*(length(df)-1))/2)) {
for (i in 1:(length(df)-1)) {
for (j in (i+1):length(df)) {
all_pairs[ij, 1] = df[i,]
all_pairs[ij,2] = df[j,]
}
}
}
((length(df)*(length(df)-1))/2)
的原因, 那么 comb=n(n-1)/2 就是我计算所有组合而无需替换的方式。
如前所述,我已经尝试了几种方法来做到这一点,但都没有奏效。这是实现我的目标的好方法吗?如果是,我怎样才能让它发挥作用?
提前致谢!
最佳答案
使用 combn
和 m = 2
得到组合对:
data.frame(t(combn(1:4, m = 2)))
X1 X2
1 1 2
2 1 3
3 1 4
4 2 3
5 2 4
6 3 4
关于r - 将所有可能的对组合在 R 中的一个数据框中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72044747/