r - 将所有可能的对组合在 R 中的一个数据框中

标签 r dataframe for-loop

我正在尝试创建一个循环,在该循环中我可以在一个数据框中获得所有可能的组合。这样做的原因是我想稍后使用这些对来创建 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 就是我计算所有组合而无需替换的方式。

如前所述,我已经尝试了几种方法来做到这一点,但都没有奏效。这是实现我的目标的好方法吗?如果是,我怎样才能让它发挥作用?

提前致谢!

最佳答案

使用 combnm = 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/

相关文章:

r - 在 quantstrat 中执行止损限价订单时出错

r - 根据 dplyr 中的正则表达式匹配从长到宽的突变

r - 将列表矩阵转换为 data.frame

windows - CMD 中的循环...如何循环 A 到 Z(对于驱动器号)

javascript - 这个 for 循环如何制作 8x8 的板?

r - 根据值将数据框列的内容拆分为不同的列

r - 有什么办法延长图例中的界限吗?

r - 跨列计算平均值、标准差、n 等并创建新的数据框

python - 如果列位于列表的任何部分,则过滤数据框

c++ - 以下基于范围的 for 循环内幕后的列表是什么?