[英]How to use a platform specific package in my R function
我的R软件包具有一个函数( my_func
),该函数使用另一个软件包( foo
)中的function( bar
),该软件包仅在Unix上可用。 因此,按照编写R扩展中建议的软件包,以这种方式编写代码:
my_func = function(){
....
if (requireNamespace("foo", quietly = TRUE)) {
foo::bar(..) # also tried bar(...)
} else {
# do something else without `bar`
}
...
}
但是,当我运行R CMD检查时,我总是收到这样的警告消息:
未从foo中声明“ loadNamespace”或“ requireNamespace”调用
有没有办法使用平台特定的软件包而不给出此类警告? 我试图将foo
包含在Description文件中,警告消失了,但是由于foo
无法用于Win,因此无法将软件包安装在Windows上。
我认为您会误解该评论,尽管这样做很容易,因为逻辑并不清晰且无可辩驳。
在讨论使用require(package)
调用包的第一段中,他们说对于测试环境或小插图来说可以,但不能从完成的函数内部使用library(package)
或require(package)
。
这被认为是错误的形式,因为您在函数内调用的程序包会篡改用户在加载程序包时在其工作环境中设置的访问顺序。
您在上面使用的方法:
package::function()
是在不更改当前环境的情况下在功能内使用功能的方法的认可。
但是要使用该功能,您仍必须在当前计算机或当前工作环境中安装该软件包(例如virtualenv或ipython或jupytr ..是的,R在所有这些环境中都可以工作)。
您无法运行R在工作环境中无法看到的功能...因此,您必须安装但不一定要加载它才能调用它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.