Dear Barry, some thoughts:
1) e in your function status_fnc is a vector when applied on a matrix like object, but you index it as a matrix (e[,i] should be e[i]). 2) You can simplify the if statement by using the function any (replacing all the OR statements) on the vector, so use any(e=='Y') here. 3) sapply applies over a list, which your object isn't. You provide a matrix (cbind), so you should use apply in that case. So one solution might be: ex1 <- c('Y', 'N', 'Y') ex2 <- c('Y', 'N', 'Y') ex3 <- c('N', 'N', 'Y') ex4 <- c('N', 'N', 'Y') status_fnc <- function(e){ if (any(e=='Y')) return('Okay') else return('Not okay') } status <- apply(cbind(ex1, ex2, ex3, ex4), 1, status_fnc) status On 8 October 2014 12:54, Barry King <barry.k...@qlx.com> wrote: > ex1 <- c('Y', 'N', 'Y') > ex2 <- c('Y', 'N', 'Y') > ex3 <- c('N', 'N', 'Y') > ex4 <- c('N', 'N', 'Y') > > status <- array(NA, dim=3) > > # I am trying to return 'Okay' if any of the values > # in a column above is 'Y' but I am not constructing > # the function corrrectly. Any assistance is > # greatly appreciated > > status_fnc <- function(e){ > if (e[ ,1] == 'Y' | e[ ,2] == 'Y' | e[ ,3] == 'Y' | e[ ,4] == 'Y'){ > return('Okay') > } else return('Not okay') > } > status <- sapply(cbind(ex1, ex2, ex3, ex4), status_fnc) > > [[alternative HTML version deleted]] > > ______________________________________________ > 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. ______________________________________________ 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.