On Sep 10, 2013, at 12:40 PM, Jonathan Greenberg wrote: > R-helpers: > > One of my intrepid students came up with a solution to a problem where > they need to write a function that takes a vector x and a "scalar" d, > and return the indices of the vector x where x %% d is equal to 0 (x > is evenly divisible by d). I thought I had a good handle on the > potential solutions, but one of my students sent me a function that > WORKS, but for the life of me I can't figure out WHY. Here is the > solution: > > remainderFunction<-function(x,d) > { > ifelse(x%%d==0,yes=return(which(x%%d==0)),no=return(NULL)) > } > remainderFunction(x=c(23:47),d=3) > > I've never seen an ifelse statement used that way, and I was fully > expecting that to NOT work, or to place the output of which(x%%d==0) > in each location where the statement x%%d==0 was true.
I think it did what you expected (at east your second expectation). Look at: c(NULL, 1,2,3, NULL, 4,5,6, NULL) # [1] 1 2 3 4 5 6 Obviously teh ifelse is not needed since this is cleaner code: remainderFunction<-function(x,d) { which(x%%d==0) } remainderFunction(x=c(23:47),d=3) # [1] 2 5 8 11 14 17 20 23 -- David. > > Any ideas on deconstructing this? > > --j > > -- > Jonathan A. Greenberg, PhD > Assistant Professor > Global Environmental Analysis and Remote Sensing (GEARS) Laboratory > Department of Geography and Geographic Information Science > University of Illinois at Urbana-Champaign > 607 South Mathews Avenue, MC 150 > Urbana, IL 61801 > Phone: 217-300-1924 > http://www.geog.illinois.edu/~jgrn/ > AIM: jgrn307, MSN: jgrn...@hotmail.com, Gchat: jgrn307, Skype: jgrn3007 > > ______________________________________________ > 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. David Winsemius Alameda, CA, USA ______________________________________________ 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.