nposargs is mainly for use in the body of function definitions,
  paricularly for functions or methods that wish to mimic the behaviour
  of "[".
nposargs gives the number of positional arguments used in a
  call. It also takes into account empty arguments like those used in
  expressions like x[1, ].
Optionally, it makes a particular correction that is peculiar
  for "[" - if there are no named arguments in the call and the count
  of the arguments is 2 and a[1]=TRUE, it decreases the count by
  one, i.e. returns 1. This is to distinguish between a x[] and
  x[i] which both would give 2 otherwise. I have forgotten the details but,
  roughly speaking, x[i] becomes "["(x,i) while x[] becomes "["(x,),
  i.e. R puts the comma after x in any case.