Denote a package as P and its two strong parent packages as A and B, i.e., parent packages in "Depends", "Imports" and "LinkingTo",
the co-heaviness for A and B is calculated as follows.
Denote S_A as the set of reduced dependency packages when only moving A to "Suggests" of P, and denote S_B as the set of reduced dependency
packages when only moving B to "Suggests" of P, denote S_AB as the set of reduced dependency packages when moving A and B together to "Suggests" of P,
the co-heaviness of A, B on P is calculatd as length(setdiff(S_AB, union(S_A, S_B)))
, which is the number of reduced package only caused by co-action of A and B.
Note the co-heaviness is only calculated for parent packages in "Depends", "Imports" and "LinkingTo".
When jaccard
is set to TRUE
, the function returns jaccard coeffcient. setdiff(S_AB, union(S_A, S_B))
is actually
the set of dependencies imported by and only by two parent packages A and B. Thus the jaccard coeffcient is calculated as
length(setdiff(S_AB, union(S_A, S_B)))/length(S_AB)
.