我想将一式三份的结果集分成三个可能的重复项。

如果初始设置是

    A   B   C
1 122 106 114
2 110 122 110

我想把它变成
    A   B
1 122 106
2 122 114
3 106 114
4 110 122
5 110 110
6 122 110

combn函数将逐行完成此操作,但是我无法弄清楚如何将其应用于整个数据帧(这可能会很大,我仅使用两行进行演示)。

最佳答案

您可以执行以下操作:

  • 使用lapply()为数据
  • 的每一行应用combn
  • 使用rbind合并结果
  • 利用do.call的魔力来组合由步骤1和2创建的列表。

  • 在一行代码中:
    do.call(rbind, lapply(seq(nrow(dat)), function(i)t(combn(dat[i, ], 2))))
        [,1] [,2]
    [1,] 122  106
    [2,] 122  114
    [3,] 106  114
    [4,] 110  122
    [5,] 110  110
    [6,] 122  110
    

    关于r - 将三份重复拆分为重复份,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25402561/

    10-12 20:06