Skip to content

Is there an variant of apply() that does not return anything?

7 messages · Peng Yu, Charlie Sharpsteen, jim holtman +2 more

#
There are a few version of apply() (e.g., lapply(), sapply()). I'm
wondering if there is one that does not return anything but just
silently apply a function to the list argument.

For example, the plot function is applied to each element in 'alist'.
It is redundant to return anything from apply.

apply(alist,function(x){ plot each element of alist})
#
On Nov 20, 2009, at 10:21 AM, Peng Yu wrote:

            
Just use a for() loop. If you are plotting things, the performance  
bottleneck is not going to be in the loop.

Sometimes, we get too anal about avoiding for() loops.

HTH,

Marc Schwartz
#
On Thu, Nov 19, 2009 at 2:21 PM, Peng Yu <pengyu.ut at gmail.com> wrote:
Take a look at the l_ply(), a_ply() and d_ply() functions from
Hadley's "plyr" package.  They are a refinement and extension to the
apply family of functions and the underscore, "_", in the function
names indicates that they have no return value.


-Charlie
#
invisible(apply(...))
On Thu, Nov 19, 2009 at 5:21 PM, Peng Yu <pengyu.ut at gmail.com> wrote:

  
    
#
On Thu, Nov 19, 2009 at 4:27 PM, Marc Schwartz <marc_schwartz at me.com> wrote:
Is there a way to get the name of the list in the loop body?
[1] "c"
[1] "x"
[1] "q"
#
On Nov 19, 2009, at 4:31 PM, Peng Yu wrote:

            
Here is one approach to give you some insight into how to get the name  
(as opposed to the object itself) of an argument passed to a function:

MyList <- list(a = 1, b = 2, e = 3)

PlotFn <- function(x)
{
   # Get the name of the object passed as 'x' (eg. "MyList")
   Main <- deparse(substitute(x))

   for (i in seq(along = x))
   {
     plot(x[[i]], main = Main, ylab = names(x[i]))
   }
}

# Set to pause between each graphic
par(ask = TRUE)

PlotFn(MyList)

Take note that the main title for each graphic will be "MyList" and  
the y axis label for each, will be the name of each of the three  
components in MyList (eg. "a", "b" and "e")

HTH,

Marc Schwartz