【发布时间】:2023-03-20 15:22:02
【问题描述】:
我有一个使用来自treemap 的tmPlot 函数的包,但是当我尝试使用该函数时,它会抛出一个错误,即它的依赖项之一未加载:
Error in tmPlot(data, index = index, vSize = vSize) :
could not find function "brewer.pal"
依赖项已安装并在命名空间中。
这个问题有一点设置,是一个包问题,但我尽量让它尽可能小:
确保您已安装 treemap(及其所有依赖项)。
我创建了一个名为“anRpackage”的目录。里面是一个文件夹('R')和一个包含以下文本的说明文件:
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'
在 R/ 文件夹中有一个名为“maketree.R”的 R 文件。其内容为:
#' maketree
#'
#' @importFrom treemap tmPlot
#' @export maketree
maketree <-
function(data, index, vSize){
tmPlot(data, index=index, vSize=vSize)
}
假设您位于“anRpackage”上方的目录中,请运行以下脚本:
library(roxygen2)
roxygenise("anRpackage/")
library(devtools)
build("anRpackage")
install("anRpackage")
重新启动 R(最好使用 --vanilla)并运行以下命令:
library(anRpackage)
data(mtcars)
maketree(mtcars, "cyl", "mpg")
您应该得到我在开始时描述的错误。为什么会这样? RColorBrewer 被列为 Depends for treemap,所以它应该是自动导入的,不是吗?
【问题讨论】:
-
尝试添加
import RColorBrewer。treemap可能不会自动加载此包,或者它可能会自动加载,但仅调用树图中的一个函数不会调用RColorBrewer。 -
@TylerRinker 这并不是我想要解决这个问题(通过在函数中添加
library(treemap)可以很容易地解决这个问题)。更重要的是,我想知道为什么这个问题会在这里发生,而根据我的理解,它不应该发生。我不明白为什么有些包需要手动加载而不是其他包。
标签: r namespaces treemap