# Hello
# I  have a question regarding pairwise calculations of a matrix using a
"for-loop."
# Below I have a matrix "X" with 8 columns. These are Genotypic data so
Column1 & Column2 is
# a unit, Column3 & Column4 is a unit, Column5 & Column6 is a unit,  and
Coulmn7 & 8 is a unit.
# I have a loop designed to calculate the number of times an individual in
Column"i" & Column"j"
# has the same value and the same individual has two values that are the
same in Column"k" & Column"l" .
# I have another seires of code that adds a 2 in the poper location of a
data frame called "result.df".
# I have written a loop that accomplishes this "pair of columns" pairwise
comparison, but it also compares
# some of the "pairs of Columns" to themselves. Is there a way to get around
this?


# creation of the data matrix
c1<- c(1,4,3,2,4,1,3,2,4,3)
c2<- c(2,4,3,4,4,3,4,1,3,2)
c3<- c(1,3,2,4,4,3,4,4,2,2)
c4<- c(2,3,2,3,1,3,2,4,4,3)
c5<- c(1,2,1,1,2,2,2,3,2,1)
c6<- c(3,2,4,3,1,1,2,3,3,4)
c7<- c(1,2,1,2,3,2,3,2,1,2)
c8<- c(1,2,2,3,2,3,3,4,1,2)

X<-cbind(c1,c2,c3,c4,c5,c6,c7,c8)

X

## Creation of the result dataframe
result<- matrix(0,16,2)
result.df<-data.frame(result)
result.df[,1] <- c(1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4)
result.df[,2] <- c(1,2,3,4,1,2,3,4,1,2,3,4,1,2,3,4)
names(result.df)[1]<-"L(A)a(i)"
names(result.df)[2]<-"L(B)a(j)"

result.df



### The loop written to find Double Homozygotes


for (a in seq(1,(ncol(X)-3), by=2)){
for (b in seq(3,(ncol(X)-1), by=2)){
for (i in a){
    j <- a+1
for (k in b){
    l <- b+1

    match.rows <- ((X [,i] == X [, j] ) &   ( X [,k] == X [, l]))

    double_homo_i <- X [match.rows, i]
    double_homo_k <- X [match.rows, k]

    double_homo<- cbind( double_homo_i, double_homo_k)
    double_homo.df<-data.frame(double_homo,Counts=2)
       names(double_homo.df)[1]<-"L(A)a(i)"
       names(double_homo.df)[2]<- "L(B)a(j)"


# Below takes each round throught he loop and puts in the result.dfdataframe.

count<-double_homo.df

almost.df<-aggregate(count$Counts, list(count[,1],count[,2]),
FUN=sum)

temp<-order(almost.df$Group.1)
final.df<-almost.df[temp,]
names(final.df)[1]<-"L(A)a(i)"
names(final.df)[2]<-"L(B)a(j)"

result.df<-merge(result.df,final.df,by=c("L(A)a(i)","L(B)a(j)"), all.x=T)

             }
             }
             }
             }


# here is the result I get

result.df



#     L(A)a(i) L(B)a(j) C1C2~C3C4 C1C2~C5C6 C1C2~C7C8 C3C4~C3C4 C3C4~C5C6
C3C4~C7C8 C5C6~C3C4 C5C6~C5C6 C5C6~C7C8
#  1         1        1       NA        NA         NA        NA
NA        NA        NA        NA        NA
#  2         1        2       NA        NA         NA        NA
NA        NA        NA        NA        NA
#  3         1        3       NA        NA         NA        NA
NA        NA        NA        NA        NA
#  4         1        4       NA        NA         NA        NA
NA        NA        NA        NA        NA
#  5         2        1       NA        NA         NA        NA
NA        NA        NA        NA        NA
#  6         2        2       NA        NA         NA         2
NA        NA        NA         4         2
#  7         2        3       NA        NA         NA        NA
NA        NA         2        NA         2
#  8         2        4       NA        NA         NA        NA
NA        NA        NA        NA        NA
#  9         3        1       NA        NA         NA        NA
NA        NA        NA        NA        NA
#  10        3        2        2        NA         NA        NA
2         2        NA        NA        NA
#  11        3        3       NA        NA         NA         4
NA        NA        NA         2        NA
#  12        3        4       NA        NA         NA        NA
NA        NA         2        NA        NA
#  13        4        1       NA        NA         NA        NA
NA        NA        NA        NA        NA
#  14        4        2       NA         2          2        NA
NA        NA        NA        NA        NA
#  15        4        3        2        NA         NA        NA
2        NA        NA        NA        NA
#  16        4        4       NA        NA         NA         2
NA        NA        NA        NA        NA





# Here is the Result I am looking for.

     L(A)a(i) L(B)a(j) C1C2~C3C4 C1C2~C5C6 C1C2~C7C8 C3C4~C5C6 C3C4~C7C8
C5C6~C7C8
# 1         1        1        NA        NA        NA        NA
NA        NA
# 2         1        2        NA        NA        NA        NA
NA        NA
# 3         1        3        NA        NA        NA        NA
NA        NA
# 4         1        4        NA        NA        NA        NA
NA        NA
# 5         2        1        NA        NA        NA        NA
NA        NA
# 6         2        2        NA        NA        NA        NA
NA         2
# 7         2        3        NA        NA        NA        NA
NA         2
# 8         2        4        NA        NA        NA        NA
NA        NA
# 9         3        1        NA        NA        NA        NA
NA        NA
# 10        3        2         2        NA        NA         2
2        NA
# 11        3        3        NA        NA        NA        NA
NA        NA
# 12        3        4        NA        NA        NA        NA
NA        NA
# 13        4        1        NA        NA        NA        NA
NA        NA
# 14        4        2        NA         2         2        NA
NA        NA
# 15        4        3         2        NA        NA         2
NA        NA
# 16        4        4        NA        NA        NA        NA
NA        NA


# Any help or ideas would be greatly appreciated

# Thanks in advance

# Luke Neraas

# lukasneraas.r@gmail.com

# University of Alaska Fairbanks
# School of Fisheries and Ocean Sciences
# 11120 Glacier Highway
# UAF Fisheries Division
# Juneau, AK 99801

	[[alternative HTML version deleted]]

