[R] Function for Data Frame

MacQueen, Don macqueen1 at llnl.gov
Mon Apr 29 22:34:28 CEST 2013

Just to add a little, don't get distracted by the return() function.
Functions return the value of their final expression, provided it isn't an

For your example, this will do the job:

myfunc <- function(DF) subset(DF, select=-V1)

If you want to modify the data frames in place, one way is to use a loop
instead of lapply.

mydfs <- list(DF1, DF2, DF3)

for (il in 1:3) mydfs[[il]] <- myfunc(mydfs[[il]])

But so should
  mydfs <- lapply(mydfs,myfunc)

I doubt very much you'll see any performance difference between using
lapply() and using an explicit loop.


Don MacQueen

Lawrence Livermore National Laboratory
7000 East Ave., L-627
Livermore, CA 94550

On 4/29/13 7:23 AM, "Sparks, John James" <jspark4 at uic.edu> wrote:

>Dear R Helpers,
>I have about 20 data frames that I need to do a series of data scrubbing
>steps to.  I have the list of data frames in a list so that I can use
>lapply.  I am trying to build a function that will do the data scrubbing
>that I need.  However, I am new to functions and there is something
>fundamental that I am not understanding.  I use the return function at the
>end of the function and this completes the data processing specified in
>the function, but leaves the data frame that I want changed unaffected.
>How do I get my function to apply its results to the data frame in
>question instead of simply displaying the results to the screen?
>Any helpful guidance would be most appreciated.
>--John Sparks
>        1,2,3,
>        1,2,2,
>        1,2,2,
>       1,1,1),ncol=3,byrow=T))
> DF<-subset(DF,select=-c(V1))
> return(DF)
>#How to get this change to data frame x?
>#And preferrably not send the results to the screen?
>R-help at r-project.org mailing list
>PLEASE do read the posting guide
>and provide commented, minimal, self-contained, reproducible code.

More information about the R-help mailing list