R is a distinctive language, and one of the ways that is distinguishes itself from other language is the way function calls are handled. Function arguments are named, and can be provided out of order or even not at all (in which case default values can be used). Lazy evaluation and R's scoping rules can result in some elegant (or surprising, depending on your point of view) code. Tom Moertel delves into all these aspects of R's function call semantics in this interesting post from 2006. Some fascinating nuggets in there: did you know you can abbreviate argument names ambiguously as long as the other clashing argument names are bound?
Tom Moertel's Weblog: Wondrous oddities: R's function-call semantics