tmPlot is in namespace, but its dependencies are not found

后端 未结 3 1651
礼貌的吻别
礼貌的吻别 2021-01-12 23:19

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 i

3条回答
  •  刺人心
    刺人心 (楼主)
    2021-01-12 23:51

    The problem is really with treemap. treemap uses brewer.pal, and so should Imports: RColorBrewer and importFrom(RColorBrewer, brewer.pal).

    As it stands now, everything is ok if the user says library(treemap), treemap and RColorBrewer are attached to the search() path, and when tmPlot is evaluated brewer.pal is found on the search path. Of course the package would break if the user were to say brewer.pal="yeast" or something, because the wrong symbol would be found; this is one of the reasons for a name space, to protect treemap's functions from what the user might do.

    But what happens when you (correctly) Imports: treemap? treemap is loaded (into memory) but neither treemap nor its dependencies are attached (to the search path). So brewer.pal is not found.

    If treemap were to Imports: RColorBrewer, then brewer.pal would be found both when treemap were attached to the search path by a call to library(treemap), and when only imported into your package.

    Contact the maintainer of treemap and ask them to do a more careful job of constructing their name space.

提交回复
热议问题