[R] Deparsing part of a list argument
Andrew Smith
andrewsmith81 at gmail.com
Thu Oct 25 23:38:27 CEST 2007
Here's a simple example of the type of function I'm trying to write,
where the first argument is a list of functions:
myfun <- function(funlist, vec){
tmp <- lapply(funlist, function(x)do.call(x, args = list(vec)))
names(tmp) <- names(funlist)
tmp
}
> myfun(list("Summation" = sum, prod, "Absolute value" = abs), c(1, 4, 6, 7))
$Summation
[1] 18
[[2]]
[1] 168
$`Absolute value`
[1] 1 4 6 7
What I would like is for the names of the result to be the same as the
names of funlist (as is the case in components 1 and 3 above), but if
some components of funlist are unnamed, I would like the default name
in the result to be the name of the actual function used. So in the
above example, I want the name of the second component to default to
'prod', since funlist[[2]] has no name.
But the problem is that I can't get the function names corresponding
to the unnamed elements of funlist by using the usual
deparse(substitute)) trick, since they're part of a list which is
treated as one big argument. So deparse(substitute(funlist)) just
gives me one big character string of all the functions, and I'm not
sure how I can use that to get just the functions that aren't named.
Any ideas?
Thanks,
Andrew
More information about the R-help
mailing list