Peng Yu
2009-Nov-19 22:21 UTC
[R] Is there an variant of apply() that does not return anything?
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})
Marc Schwartz
2009-Nov-19 22:27 UTC
[R] Is there an variant of apply() that does not return anything?
On Nov 20, 2009, at 10:21 AM, Peng Yu wrote:> 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})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
Charlie Sharpsteen
2009-Nov-19 22:27 UTC
[R] Is there an variant of apply() that does not return anything?
On Thu, Nov 19, 2009 at 2:21 PM, Peng Yu <pengyu.ut at gmail.com> wrote:> 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})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
jim holtman
2009-Nov-19 22:29 UTC
[R] Is there an variant of apply() that does not return anything?
invisible(apply(...)) On Thu, Nov 19, 2009 at 5:21 PM, Peng Yu <pengyu.ut at gmail.com> wrote:> 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}) > > ______________________________________________ > 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?
Peng Yu
2009-Nov-19 22:41 UTC
[R] Is there an variant of apply() that does not return anything?
I want to use both the name and the content. Although, I could do the following thing. for(x in names(List)) { do some thing with x do some thing with List[[x]] } However, I'd prefer something like the following if R offers such functionality. But it seems not. for(x in List) { do something with the name of x do something with x } On Fri, Nov 20, 2009 at 4:35 PM, Jorge Ivan Velez <jorgeivanvelez at gmail.com> wrote:> If I understood correctly > for(x in names(List)) print(x) > should do what you asked. > HTH, Jorge > > On Thu, Nov 19, 2009 at 5:31 PM, Peng Yu <> wrote: >> >> On Thu, Nov 19, 2009 at 4:27 PM, Marc Schwartz <marc_schwartz at me.com> >> wrote: >> > On Nov 20, 2009, at 10:21 AM, Peng Yu wrote: >> > >> >> 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}) >> > >> > >> > >> > 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. >> >> Is there a way to get the name of the list in the loop body? >> >> > List=list(a='c',b='x',e='q') >> > for(x in List) { print(x) } >> [1] "c" >> [1] "x" >> [1] "q" >> >> ______________________________________________ >> 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. > >