我想使用R脚本向其他人编写的包中添加一个经过特殊修改的函数,即仅用于会话,而不是永久地。假设特定示例已bls_map_county2()
添加到blscrapeR软件包中。bls_map_county2
只是bls_map_county()
带有附加...
参数的函数副本,目的是更改一些地图绘制参数。我尚未插入其他参数。按原样运行该函数,出现错误:
BLS_map_county中的错误(map_data = df,fill_rate =“ unemployed_rate” ,:找不到函数“ geom_map”
我认为这是因为我的函数没有指向blscrapeR
名称空间。如何将我的函数分配给(已安装,已加载)blscrapeR
命名空间,还有什么需要我做的事情才能让它访问所需软件包中的任何机器?
此答案分为两部分-首先是对问题的一般性答案,其次是针对您所引用的特定功能的特定答案,其中问题有所不同。
由于已加载包名称空间,因此您应该已经可以访问它,因此只有未导出的功能才会给您带来问题。
我通常只是将包名称和:::
运算符放在非导出函数的前面。即,找到对的调用的每个实例some_internal_function()
,并将其替换为PackageName:::some_internal_function()
。如果您正在编辑的函数中调用了多个不同的内部函数,则对于每个有问题的函数调用,您可能需要执行几次。
的帮助页面:::
确实包含这些警告
当心-使用':::'后果自负!
和
在代码中使用:::通常是一个设计错误,因为相应的对象可能由于很好的原因而保留在内部。如果您仅出于检查目的,如果需要访问对象,请考虑与软件包维护者联系。
但是对于您正在做的事情,就暂时从同一个程序包中窃取另一个功能供您自己使用而言,这些警告应该可以忽略不计(当然,后果自负-如手册中所述)
blscrapeR ::bls_map_county()
在这种情况下,违规行是
ggplot2::ggplot() + geom_map(...
包编写者在其中指定了ggplot2命名空间ggplot()
,但忘记这样做了geom_map()
,它也是ggplot2的一部分(而不是blscrapeR的内部函数)。
在这种情况下,只需加载ggplot2,就可以了。
您也可以考虑与软件包维护者联系,以告知他们该错误。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句