@hadley agreed, `match.fun` is nicer. 

One more thing: with the mapply, the returned object isn't always the same time, which can cause a problem when `deps` has zero rows. Probably best to do something like:

```
needed <- mapply(needs_install, deps$name, deps$compare, deps$version, SIMPLIFY = FALSE)
needed <- deps$name[as.logical(needed)]
```

Which works for both of these cases, at least:

```
deps <- parse_deps("httr (< 2.1),\nRCurl (>= 3)")
deps <- parse_deps("")
```