Dear R-helpers:

I am trying to write a script that iterates through a dataframe that looks
like this:


Example dataset called "sample":

names <- c("S1", "S2", "S3", "S4")
X <- c("BB", "AB", "AB", "AA")
Y <- c("BB", "BB", "AB", "AA")
Z <- c("BB", "BB", "AB", NA)
AorB <- c("A", "A", "A", "B")

sample <- data.frame(names, X, Y, Z, AorB)


for a given row,

if AorB == A, then AA == 2, AB = 1, BA = 1, BB = 0

if AorB == B, then AA == 0, AB = 1, BA = 1, BB = 2

I've been trying  to write this using apply and ifelse statements in hopes
that my code runs quickly, but I'm afraid I've make a big mess.  See below:

apply(sample, 1, function(i) {


  ifelse(sample$AorB[i] == "A",
         (ifelse(sample[i,] == "AA", sample[i,] <- 2 ,
                 ifelse(sample[i,] == "AB" || sample[i,] == "BA" ,
sample[i,] <- 1,
                        ifelse(sample[i,] == "BB", sample[i,] <- 0,
sample[i,] <- NA )) )
          )   , ifelse(sample$AorB[i,] == "B"),
         (ifelse(sample[i,] == "AA", sample[i,] <- 0 ,
                 ifelse(sample[i,] == "AB" || sample[i,] == "BA" ,
sample[i,] <- 1,
                        ifelse(sample[i,] == "BB", sample[i,] <- 2,
sample[i,] <- NA))))) })


Any Advice?

	[[alternative HTML version deleted]]

