在python中,我可以加载特定的功能或功能:
from x import y as z
我怎样才能在R中复制这个?
举例来说,我想加载只是在count从功能plyr,而不是用装载整个包library(plyr)
Jos*_*ich 19
我可能只是这样做count <- plyr::count,所以我不必费心确保我的论点正确.
如果未安装plyr,您可能希望将该定义包装在if语句中:
if (requireNamespace("plyr"))
count <- plyr::count
else
stop("plyr is not installed.")
Run Code Online (Sandbox Code Playgroud)
您也可能对导入和/或模块包感兴趣,它们为R提供类似python的导入/模块机制.
还听取来自警告添加新的仿制药部分的写作R附加软件(原文中强调):
本手册的早期版本建议进行分配
foo.default <- base::foo.这不是一个好主意,因为它在[package]安装时捕获基本功能,并且可能会在R被修补或更新时更改.
因此,count <- plyr::count如果在您正在编写的脚本中定义它,则可以使用语法source,但是如果在包中执行此操作,则应明确定义新函数并指定所有参数.
eme*_*hex 10
from plyr import count as count 可能看起来像这样:
count <- function(x) {
plyr::count(x)
}
Run Code Online (Sandbox Code Playgroud)
简化:
count <- plyr::count
Run Code Online (Sandbox Code Playgroud)
更完整:
if (requireNamespace("plyr"))
count <- plyr::count
Run Code Online (Sandbox Code Playgroud)
编辑:
我受@ eipi10评论的启发.我没有意识到::
感谢@Joshua Ulrich的建议!
R中没有直接等效的功能,但正如其他答案所述,您可以获得类似的结果.
该library参数既加载包命名空间,又将其附加到搜索列表中.正如Joshua Ulrich所指出的,可以加载包命名空间而不将命名空间附加到搜索列表.使用library实际调用loadNamespace和attachNamespace.
负载与附加的区别最好由具有丰富的软件包开发专业知识的人解释(前面提到过Ulrich先生的想法)所以我建议Hadley Wickham 在这篇关于命名空间的文章中进一步阅读.
值得注意的是,您可以使用pos参数library()来定义附加包命名空间的位置,如库语句的文档中所述.