I have a package which uses the tmPlot
function from treemap
, but when I try to use the function, it throws an error that one of its dependencies isn't loaded:
Error in tmPlot(data, index = index, vSize = vSize) :
could not find function "brewer.pal"
The dependency is installed and in the namespace.
This question has a little bit of setup, being a package problem, but I've tried to make it as minimal as possible:
Ensure you have treemap
(and all its dependencies) installed.
I've made a directory called 'anRpackage'. Inside it is a folder ('R') and a DESCRIPTION file with the following text:
Package: anRpackage
Title: What the package does (short line)
Version: 1.0
Author: Who wrote it
Maintainer: Who to complain to <yourfault@somewhere.net>
Description: More about what it does (maybe more than one line)
License: What license is it under?
Imports:
treemap
Collate:
'maketree.R'
Inside the R/ folder is a single R file called 'maketree.R'. Its contents are:
#' maketree
#'
#' @importFrom treemap tmPlot
#' @export maketree
maketree <-
function(data, index, vSize){
tmPlot(data, index=index, vSize=vSize)
}
Assuming you're in the directory above 'anRpackage', run the following script:
library(roxygen2)
roxygenise("anRpackage/")
library(devtools)
build("anRpackage")
install("anRpackage")
Restart R (preferably with --vanilla) and run the following:
library(anRpackage)
data(mtcars)
maketree(mtcars, "cyl", "mpg")
You should get the error I described right at the beginning. Why does this happen? RColorBrewer
is listed as Depends for treemap
, so it should be be automatically imported, should it not?