Sean Zhang
2009-Aug-17 21:27 UTC
[R] how to pass more than one argument to the function called by lapply?
Dear R helpers: I wonder how to pass more than one argument to the function called by lapply. For example, #R code below --------------------------- indf <- data.frame(id=I(c('a','b')),y=c(1,10)) #I want to add an addition argument cutoff into the function called by lapply. outside.fun <- function(indf, cutoff) { unlist(lapply(split(indf, indf[,'id']), function(.x, cutoff) {.x[,'y'] < cutoff} )) } #but the next line does not work outside.fun(indf,3) #as you expected, hard code cutoff works as below, but I do not like hard coding. outside.fun.hardcode.cutoff <- function(indf, cutoff) { unlist(lapply(split(indf, indf[,'id']), function(.x, cutoff) {.x[,'y'] < 3} )) } outside.fun.hardcode.cutoff(indf,) #R code above---------------------------- So, can someone kindly show me how to pass more than one arguments into the function called by lapply? Many thanks in advance. -Sean [[alternative HTML version deleted]]
jim holtman
2009-Aug-18 11:33 UTC
[R] how to pass more than one argument to the function called by lapply?
lapply(yourList, function(x1,x2,x3){x1*x2*x3}, x2=12, x3=34) ?lapply lapply(X, FUN, ...) sapply(X, FUN, ..., simplify = TRUE, USE.NAMES = TRUE) replicate(n, expr, simplify = TRUE) Arguments X a vector (atomic or list) or an expressions vector. Other objects (including classed objects) will be coerced by as.list. FUN the function to be applied to each element of X: see ?Details?. In the case of functions like +, %*%, etc., the function name must be backquoted or quoted. ... optional arguments to FUN. Noitce the '...' which are the "optional arguments to FUN". On Mon, Aug 17, 2009 at 5:27 PM, Sean Zhang<seanecon at gmail.com> wrote:> Dear R helpers: > > I wonder how to pass more than one argument to the function called by > lapply. > For example, > > #R code below --------------------------- > > indf <- data.frame(id=I(c('a','b')),y=c(1,10)) > #I want to add an addition argument cutoff into the function called by > lapply. > outside.fun <- function(indf, cutoff) > { > ?unlist(lapply(split(indf, indf[,'id']), function(.x, cutoff) {.x[,'y'] < > cutoff} )) > } > #but the next line does not work > outside.fun(indf,3) > > #as you expected, hard code cutoff works as below, but I do not like hard > coding. > outside.fun.hardcode.cutoff <- function(indf, cutoff) > { > ?unlist(lapply(split(indf, indf[,'id']), function(.x, cutoff) {.x[,'y'] < 3} > )) > } > outside.fun.hardcode.cutoff(indf,) > > #R code above---------------------------- > > So, can someone kindly show me how to pass more than one arguments into the > function called by lapply? > > Many thanks in advance. > > -Sean > > ? ? ? ?[[alternative HTML version deleted]] > > ______________________________________________ > R-help at 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. >-- Jim Holtman Cincinnati, OH +1 513 646 9390 What is the problem that you are trying to solve?