On Nov 19, 2009, at 4:31 PM, Peng Yu wrote:
On Thu, Nov 19, 2009 at 4:27 PM, Marc Schwartz
<marc_schwa...@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"
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
______________________________________________
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.