| 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