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]]

