On 24/01/2013 1:32 PM, Jannis wrote:
Dear R community,
I have a problem when I use functions as default values for argumnents
in other functions. When I use curly brackets { here, I can not create a
package with inlinedocs. It will give me the error when using
package.skeleton() in my package structure:
Error in parse(text = utxt) : <text>:4:0: unexpected end of input
For example:
dummyfunction = function(filters = function(x) {b = 0; x > b} ))
{
# rest of code here
return(filters)
}
This seems to me as a legal function declaration but creates the above
mentioned error. Is this an error of inlinedocs or do I misunderstand
the R language?
The definition above is not syntactically correct, it has an extra
closing paren on the first line. This would be correct:
dummyfunction = function(filters = function(x) {b = 0; x > b} )
{
# rest of code here
return(filters)
}
If that still confuses inlinedocs, then it's a bug in that package. This
might be easier for it to handle:
dummyfunction = function(filters)
{
if (missing(filters)) filters <- function(x) {b = 0; x > b}
# rest of code here
return(filters)
}
and it should be equivalent to the original.
Or is there another way of using functions in such a way
as arguments? In this case I could easily define this filters argument
inside the function for cases when it is not supplied as an argument but
I have some more complex functions where I really need to define
something sequential as an argument like:
dummyfunction = function(filters = {a = 1; b > a; b}) {print('test')}
That's a pretty strange definition. I would have written it as
dummyfunction = function(filters = b) {
{ a = 1
b > a
b
print('test')
}
Remember that defaults for function arguments are evaluated in the evaluation
frame of the function, not
in the caller's evaluation frame, so they don't need to exist when you enter
the function, only when you first use the associated argument.
Duncan Murdoch
______________________________________________
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.