The problem is solved with call to `do.call`:
|wrapperfX<- function(x){
dots<-if(missing(x)){
list()
}else{
list(x=x)
}
do.call(targetf,dots)
}|
It is a little awkward (such elementary operation should be one liner
IMHO), it might be slow, but it works.
I guess `match.call` is better in solving simpler problems, such as
passing all arguments (named, unnamed and ...) into targetf.
Thank you for your help!
Adam Ryczkowski
On 13.09.2013 13:21, Gerrit Eichner wrote:
> Hello, Adam,
>
> I'm rather uncertain about your goal (and consequently even more so
> about how to reach it), but anyway, maybe the function match.call()
> with its argument expand.dots is of some help for you. From its help
> page:
>
> "match.call is most commonly used in two circumstances:
>
> To record the call for later re-use: for example most
> model-fitting functions record the call as element call of the list
> they return. Here the default expand.dots = TRUE is appropriate.
>
> To pass most of the call to another function, often model.frame.
> Here the common idiom is that expand.dots = FALSE is used, and the ...
> element of the matched call is removed. An alternative is to
> explicitly select the arguments to be passed on, as is done in lm."
>
>
> Hth -- Gerrit
>
> On Fri, 13 Sep 2013, Adam Ryczkowski wrote:
>
>>
>> (This is crosspost from
>> [1]http://stackoverflow.com/questions/18670895/how-to-write-a-wrapper-functi
>> on-which-can-honour-default-values-when-the-target, posted week
>> ago, where
>> although the question did receive some attention, nobody was able
>> to help
>> me.)
>> I'd like to write a more-or-less generic caller to `targetf` that
>> retains
>> its default parameters.
>> Suppose we have a provided by some 3rd party library `targetf`:
>> targetf<-function(x=1,...){
>> print(paste("x =",x))
>> }
>> How to write `wrapperf`, that will respect `targetf`s default
>> arguments, so
>> calling `wrapperf()` would not yield the error massage `Error in
>> paste("x
>> =", x) : argument "x" is missing, with no default`?
>> The obvious candidate
>> wrapperf1<-function(x,y) {
>> targetf(x=x)
>> }
>> doesn't seem to respect targetf's default value for parameter `x`.
>> OTH the
>> wrapperf2<-function(...) {
>> targetf(...)
>> }
>> behaves correctly, but it doesn't work for me, because I only care
>> to pass
>> the `x` argument, (and possibly reserve the `...` to other
>> functions in
>> `wrapperf` body).
>> Maybe to solve the issue I'd have to play with ellipsis filtering,
>> which is
>> a *terra incognita* for me at the moment...
>> * * *
>> One idea on how to solve the problem: maybe I'd need to create a
>> specially
>> crafted `...` object from scratch in `wrapperf` to do pseudo code
>> like this:
>> wrapperfX<-function(x,y,...)
>> {
>> ...<-if(missing(x){
>> list()
>> }else{
>> list(x=x)
>> }
>> targetf(...)
>> }
>> But I have no idea how to even start doing assignments into
>> ellipsis... is
>> it possible at all?
>> kind regards,
>> Adam Ryczkowski
>>
>> [2]www.statystyka.net
>> [3]+48505919892
>> [4]Skype:sisteczko
>>
>> References
>>
>> 1.
>> http://stackoverflow.com/questions/18670895/how-to-write-a-wrapper-function-which-can-honour-default-values-when-the-target
>> 2. http://www.google.com/
>> 3. callto:+48505919892
>> 4. skype:sisteczko
>> ______________________________________________
>> [email protected] 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.
[[alternative HTML version deleted]]
______________________________________________
[email protected] 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.