I don't understand how this function can subset by i when i is missing....
## My function:
myfun = function(vec, i){
ret = vec[i]
ret
}
## My data:
i = 10
vec = 1:100
## Expected input and behavior:
myfun(vec, i)
## Missing an argument, but error is not caught!
## How is subsetting even possible here???
myfun(vec)
Is there a way to check for missing function arguments, *and* which function
arguments are missing?
For example
myfun = function(vec, i){
curArgs = current.function.arguments()
if(any(sapply(curArgs, missing))){
stop()
}
ret = vec[i]
ret
}
Obviously "current.function.arguments()" is imaginary, but is there
something that would return the current arguments in a way that could be
passed to "missing()"??
I tried this:
curfun = substr(match.call()[1],1,nchar(match.call()[1]))
curargs = strsplit(deparse(args(curfun)),',')[[1]]
curargs = gsub('function|\\(| |\\)','',curargs)
sapply(curargs,missing(x))
and this:
sapply(curargs,function(txt) eval(substitute(missing(x), list(x=txt))))
inside the function, but missing doesn't like it when you do anything but
call it directly
Using R 2.13.0 on a Windows 7 machine
[[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.