Hi, On Sun, Jul 31, 2011 at 12:30 PM, Alex Zhang <alex.zh...@ymail.com> wrote: > Dear all, > > I am having a problem with mapply. I guess the reason is that mapply is not > "vectorized". But could you please take a look at my code below and help me > to find a solution (either a better way to use mapply or a different function > to call). Thanks a lot! > > > ##beginning of my code > myfun <- function(threshold, all.data) { > ##Just a demostration of a function that takes a dataframe. > #browser() > #print(all.data) > return (min(subset(all.data, id > threshold)$val)) > } > > my.data = data.frame(id = (1:10), val = (-3:6)) > > print(myfun(2, my.data)) ##Everything works up to here. > result = mapply(myfun, (2:4), rep(my.data, 3)) ##got trouble here. > ##More specifically, the all.data inside myfun is no longer a dataframe.
Right. Try doing `rep(my.data, 3)` just in your workspace and see what you get -- this is why it's not working. In this case, though, it doesn't seem as if you need mapply, since you aren't "looping" over two variables, simultaneously, right?. It looks like your `threshold` is the only thing that's changing, while `all.data` is fixed, no? So why not just do something like: R> lapply(thresholds, function(x, subset(all.data, id > x)$val)) Would that do the trick? -steve -- Steve Lianoglou Graduate Student: Computational Systems Biology | Memorial Sloan-Kettering Cancer Center | Weill Medical College of Cornell University Contact Info: http://cbio.mskcc.org/~lianos/contact ______________________________________________ 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.