Can't figure out error in lapply

apply, lapply, r

Solution

There is nothing wrong with your `lapply()` per se, but the problem is that `library()` evaluates its arguments in a slightly special way.

This means you need to use

library(pkg.name, character.only=TRUE)

This is rather obscure in the help for `?library`:

package, help the name of a package, given as a name or literal character string, or a character string, depending on whether character.only is FALSE (default) or TRUE).

What this means is that if you supply a character string to `library()`, you must set `character.only` to TRUE.

So, try this:

lapply(x, library, character.only=TRUE)

Then you will probably want to call `require()` instead of `library()`, and simplify the results with `sapply`:

sapply(x, require, character.only=TRUE)
ggplot2  gtable    grid 
   TRUE    TRUE    TRUE 

The difference is that `require()` returns a single logical value indicating whether the package was loaded successfully or not.

Problem

I am a beginner having picked up R a few weeks ago and am trying to learn the `apply` family. Can't figure out how to use `lapply` and it is maddenning. Yes, I looked up `?lapply` and several books including R in a nutshell and R cookbook and still can't figure out what am I doing wrong. ``` lapply(X = c("ggplot2", "gtable", "grid"), library) ## Error: 'package' must be of length 1 lapply(X = c("ggplot2", "gtable", "grid"), FUN = function(x) library(x)) ## Error: there is no package called 'x' lapply(X = c("ggplot2", "gtable", "grid"), FUN = library) ## Error: 'package' must be of length 1 x = c("ggplot2", "gtable", "grid") lapply(x, library) ## Error: 'package' must be of length 1 lapply(x, FUN = function(x) library(x)) ## Error: there is no package called 'x' ```

Original source