[R] pairing data using combn with criteria

David Winsemius
Fri, 16 Nov 2012 20:23:18 -0000

On Nov 16, 2012, at 6:58 AM, bjmjarrett wrote:

> Dear All,
>
> I have a dataframe made up of individual beetles consisting of individual
> number, family number, mother's family number, father's family
number, and
> sex of the beetle.  I would like to pair up the individuals for breeding.
I
> would, however, like to avoid breeding beetles of the same sex (obviously),
> the same family, and with the same mother's family or father's
family, to
> avoid inbreeding.
>
> The pairs of the beetles can be done with the function combn(individual,
2).
> I have been trying to use the FUN argument of combn by reducing the options
> for combn for each individual by negating the rows that share the same sex,
> family, and parents' families, but I have had no success.
>
> Is there an easy way to package all of this into a function for the combn
> FUN argument, or is there an alternative way of doing this?

See if this helps:

 combn( 1:5, 2, FUN = function(b){
                 if (max (b) < 4 ) { b } else { c(NA,NA) } } )
     [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
[1,]    1    1   NA   NA    2   NA   NA   NA   NA    NA
[2,]    2    3   NA   NA    3   NA   NA   NA   NA    NA

--

David Winsemius, MD
Alameda, CA, USA