在所有可能的组合上运行功能

时间:2018-07-16 13:31:50

标签: r algorithm function combinations

我有一个关于我要创建的功能的概念性问题。

我希望创建一种网络图。为了做到这一点,我必须查看6个表,并将表彼此比较(二为一)。连接将基于这两个表的每种可能组合可以共享的一个变量。

我们将此变量称为x。

例如,如果table1 $ x1 = table2 $ x3,则Id希望将变量x1(对于table1)放在第三个表中。在一列中只有两个表之间的共享变量,而第二列则表明该变量在table1和table2之间共享。

我希望在表中所有可能的条目组合中进行这种比较。因此,Id必须进行比较:

1&2、1&3、1&4、1&5、1&6

2&3、2&4、2&5、2&6,

3&4、3&5、3&6,

4&5、4&6,

5&6,

其中每个数字代表一个表号。

最后的输出将是一个表,说明一个表与另一个表之间的所有共享变量,以及其中两个表共享此变量。

感谢大家的时间和帮助。

1 个答案:

答案 0 :(得分:0)

下面是一个示例,其中f(c(i, j))计算tables[[i]]tables[[j]]的函数,nms是对名称的向量,最后一行计算f每对。

tables <- lapply(1:6, "*", BOD) # list of 6 tables used as input
f <- function(ix) { 
  tab1 <- tables[[ix[1]]]
  tab2 <- tables[[ix[2]]]
  sum(abs(tab1 - tab2))
}
nms <- combn(seq_along(tables), 2, paste, collapse = "-")
setNames(combn(seq_along(tables), 2, f), nms)

给予:

1-2 1-3 1-4 1-5 1-6 2-3 2-4 2-5 2-6 3-4 3-5 3-6 4-5 4-6 5-6 
111 222 333 444 555 111 222 333 444 111 222 333 111 222 111