在数据帧上应用组合函数并保存为单个 list/dataframe

Applying combine function over dataframe and saving as a single list/dataframe

我正在尝试创建网络。我有一个数据框:

。 . v1.v2.v3
1/ .1 ... 2.... 3

2/ .3 ... 4 .. 7

3/。 6 ...11 。 9

我希望在每一行中找到所有可能的组合。例如,第一行的值为 1、2、3,因此结果为 (1, 2) (1, 3) (2, 3)。然后我将继续查找仅在第二行 3、4、7 返回 (3, 4) (3, 7) (4, 7) 中的值之间的组合。

现在我希望按行执行此功能,然后将所有结果组合成一个边缘列表来创建网络。

我已经尝试了几个小时的 for functions、apply 和 combn 迭代,但我似乎无法让它工作。

有没有人知道如何处理这个问题?

最后,我对R比较陌生,有什么方法可以分解或者一步步解决吗?如果您可以使用简单的函数,例如 apply、for 循环和其他东西而不是奇怪的特定函数,我将不胜感激。这样我就可以查看您的想法并从中学习,以便以后将它们应用于其他问题。

你们可能非常亲密 (虽然你应该 post 你以后尝试的代码, 并为您的数据使用 dput 之类的东西)。

使用apply的问题是它会尝试自动简化 (对于单个向量或矩阵之类的东西), 并且由于 combn returns 矩阵, 你绝对不想简化。 当遇到以下情况时,您应该使用 lapply

lapply(1L:nrow(your_data_frame), function(i) { combn(your_data_frame[i,], m=2L) })