Hello, Your data.frame is composed exclusively of factors, but try this
(I've changed the name to 'sampl', because 'sample' is an R function.) # logical index vectors iA <- sampl$AorB == "A" iB <- sampl$AorB == "B" new.sampl <- data.frame( apply(sampl, 2, function(x){ iAA <- x == "AA" iBB <- x == "BB" x[ iA & iAA ] <- 2 x[ iA & iBB ] <- 0 # x[ iB & iAA ] <- 0 x[ iB & iBB ] <- 2 # x[ x %in% c("AB", "BA") ] <- 1 x} )) Hope this helps, Rui Barradas Priya Bhatt wrote > > 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]] > > ______________________________________________ > R-help@ mailing list > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide > http://www.R-project.org/posting-guide.html > and provide commented, minimal, self-contained, reproducible code. > -- View this message in context: http://r.789695.n4.nabble.com/Help-needed-for-efficient-way-to-loop-through-rows-and-columns-tp4630226p4630248.html Sent from the R help mailing list archive at Nabble.com. ______________________________________________ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.