groupGenotype {genetics} | R Documentation |
groupGenotype
groups genotype or haplotype values
according to given "grouping/mapping" information
groupGenotype(x, map, haplotype=FALSE, factor=TRUE, levels=NULL, verbose=FALSE)
x |
genotype or haplotype |
map |
list, mapping information, see details and examples |
haplotype |
logical, should values in a map be treated as
haplotypes or genotypes, see details |
factor |
logical, should output be a factor or a character |
levels |
character, optional vector of level names if factor is
produced (factor=TRUE ); the default is to use the sort order
of the group names in map |
verbose |
logical, print genotype names that match entries in the map - mainly used for debugging |
Examples show how map
can be constructed. This are the main
points to be aware of:
NA
map
is inspected before grouping of genotypes is being
done. The following steps are done during inspection:
alleles
-
in case of haplotype=FALSE
, "A/*" and "*/A" match the same
genotypes
Using ".else" or "*/*" at the end of the map produces the same result, due to removing duplicates sequentially.
A factor or character vector with genotypes grouped
Gregor Gorjanc
genotype
,
haplotype
,
factor
, and
levels
## --- Setup --- x <- c("A/A", "A/B", "B/A", "A/C", "C/A", "A/D", "D/A", "B/B", "B/C", "C/B", "B/D", "D/B", "C/C", "C/D", "D/C", "D/D") g <- genotype(x, reorder="yes") ## "A/A" "A/B" "A/B" "A/C" "A/C" "A/D" "A/D" "B/B" "B/C" "B/C" "B/D" "B/D" ## "C/C" "C/D" "C/D" "D/D" h <- haplotype(x) ## "A/A" "A/B" "B/A" "A/C" "C/A" "A/D" "D/A" "B/B" "B/C" "C/B" "B/D" "D/B" ## "C/C" "C/D" "D/C" "D/D" ## --- Use of "A/A", "A/*" and ".else" --- map <- list("homoG"=c("A/A", "B/B", "C/C", "D/D"), "heteroA*"=c("A/B", "A/C", "A/D"), "heteroB*"=c("B/*"), "heteroRest"=".else") (tmpG <- groupGenotype(x=g, map=map, factor=FALSE)) (tmpH <- groupGenotype(x=h, map=map, factor=FALSE, haplotype=TRUE)) ## Show difference between genotype and haplotype treatment cbind(as.character(h), gen=tmpG, hap=tmpH, diff=!(tmpG == tmpH)) ## gen hap diff ## [1,] "A/A" "homoG" "homoG" "FALSE" ## [2,] "A/B" "heteroA*" "heteroA*" "FALSE" ## [3,] "B/A" "heteroA*" "heteroB*" "TRUE" ## [4,] "A/C" "heteroA*" "heteroA*" "FALSE" ## [5,] "C/A" "heteroA*" "heteroRest" "TRUE" ## [6,] "A/D" "heteroA*" "heteroA*" "FALSE" ## [7,] "D/A" "heteroA*" "heteroRest" "TRUE" ## [8,] "B/B" "homoG" "homoG" "FALSE" ## [9,] "B/C" "heteroB*" "heteroB*" "FALSE" ## [10,] "C/B" "heteroB*" "heteroRest" "TRUE" ## [11,] "B/D" "heteroB*" "heteroB*" "FALSE" ## [12,] "D/B" "heteroB*" "heteroRest" "TRUE" ## [13,] "C/C" "homoG" "homoG" "FALSE" ## [14,] "C/D" "heteroRest" "heteroRest" "FALSE" ## [15,] "D/C" "heteroRest" "heteroRest" "FALSE" ## [16,] "D/D" "homoG" "homoG" "FALSE" map <- list("withA"="A/*", "rest"=".else") groupGenotype(x=g, map=map, factor=FALSE) ## [1] "withA" "withA" "withA" "withA" "withA" "withA" "withA" "rest" "rest" ## [10] "rest" "rest" "rest" "rest" "rest" "rest" "rest" groupGenotype(x=h, map=map, factor=FALSE, haplotype=TRUE) ## [1] "withA" "withA" "rest" "withA" "rest" "withA" "rest" "rest" "rest" ## [10] "rest" "rest" "rest" "rest" "rest" "rest" "rest" ## --- Use of "*/*" --- map <- list("withA"="A/*", withB="*/*") groupGenotype(x=g, map=map, factor=FALSE) ## [1] "withA" "withA" "withA" "withA" "withA" "withA" "withA" "withB" "withB" ## [10] "withB" "withB" "withB" "withB" "withB" "withB" "withB" ## --- Missing genotype specifications produces NA's --- map <- list("withA"="A/*", withB="B/*") groupGenotype(x=g, map=map, factor=FALSE) ## [1] "withA" "withA" "withA" "withA" "withA" "withA" "withA" "withB" "withB" ## [10] "withB" "withB" "withB" NA NA NA NA groupGenotype(x=h, map=map, factor=FALSE, haplotype=TRUE) ## [1] "withA" "withA" "withB" "withA" NA "withA" NA "withB" "withB" ## [10] NA "withB" NA NA NA NA NA