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")
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
)
)