R gotcha for the week

I use the biomaRt package from Bioconductor in almost every R session. So I thought I’d load the library and set up a mart instance in my ~/.Rprofile:

library(biomaRt)
mart.hs <- useMart(biomart = "ensembl", dataset = "hsapiens_gene_ensembl")

On starting R, I was somewhat perplexed to see this error message:

Error in bmVersion(mart, verbose = verbose) : 
  could not find function "read.table"

Twitter to the rescue. @hadleywickham told me to load utils first and @vsbuffalo explained that normally, .Rprofile is read before the utils package is loaded. Seems rather odd to me; I’d have thought that biomaRt should load utils if required, but there you go.

So this works in ~/.Rprofile:

library(utils)
library(biomaRt)
mart.hs <- useMart(biomart = "ensembl", dataset = "hsapiens_gene_ensembl")

One thought on “R gotcha for the week

  1. Marek

    You could also use options(defaultPackages) & setHook combo:

    options(defaultPackages = c(getOption(“defaultPackages”), “biomaRt”))

    setHook(
    packageEvent(“biomaRt”, “attach”),
    function(…) assign(
    “mart.hs”,
    useMart(biomart = “ensembl”, dataset = “hsapiens_gene_ensembl”),
    .GlobalEnv
    )
    )

Comments are closed.