Identify fixed loci
A locus is "fixed" if the non-missing sub-vector contains all 0's or all 2's (the locus is completely homozygous for one allele or completely homozygous for the other allele).
This function tests each locus, returning a vector that is TRUE
for each fixed locus, FALSE
otherwise.
Loci with only missing elements (NA
) are treated as fixed.
Below m
is the number of loci, and n
is the number of individuals.
fixed_loci(X)
X |
The |
A length-m
boolean vector where the i
element is TRUE
if locus i
is fixed or completely missing, FALSE
otherwise.
# here's a toy genotype matrix X <- matrix( data = c( 2, 2, NA, # fixed locus (with one missing element) 0, NA, 0, # another fixed locus, for opposite allele 1, 1, 1, # NOT fixed (heterozygotes are not considered fixed) 0, 1, 2, # a completely variable locus NA, NA, NA # completely missing locus (will be treated as fixed) ), ncol = 3, byrow = TRUE) # test that we get the desired values stopifnot( fixed_loci(X) == c(TRUE, TRUE, FALSE, FALSE, TRUE) )
Please choose more modern alternatives, such as Google Chrome or Mozilla Firefox.