0

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

. . 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) (3, 7) (4, 7) 的第二行 3, 4, 7 中找到值之间的组合。

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

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

有没有人对如何解决这个问题有任何想法?

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

4

1 回答 1

2

您可能非常接近(尽管您应该在将来发布您尝试的代码,并使用类似的东西dput来存储您的数据)。

使用的问题apply是它会尝试自动简化(类似于单个向量或矩阵),并且由于combn返回矩阵,您绝对不想要简化。lapply当你有这样的情况时,你应该使用:

lapply(1L:nrow(your_data_frame), function(i) { combn(your_data_frame[i,], m=2L) })
于 2018-06-21T21:29:19.133 回答