繁体   English   中英

选择要从R包加载的函数

[英]Choose function to load from an R package

我喜欢从matlab包中使用函数reshape ,但每次我想对矩阵元素求和时,都需要指定base::sum(m) ,否则需要调用matlab::sum ,它仅按列求和。

我需要加载gtools包才能使用rdirichlet函数,但是函数gtools::logit掩盖我更喜欢的函数pracma::logit

我没有这样的事情:

library(loadOnly = "rdirichlet", from = "gtools")

要么

library(loadEverythingFrom = "matlab", except = "sum")

..因为来自matlab包的函数可能会在内部作用于matlab::sum函数。 因此, 必须加载后者。 但是有没有办法从用户的角度来获得这种行为? 感觉像是:

library(pracma)
library(matlab)
library(gtools)
sum <- base::sum
logit <- pracma::logit

..但这不会破坏所有这些小的实用功能的ls()吗?

也许我需要定义自己的默认名称空间?

为了避免破坏ls ,您可以执行以下操作:

.ns <- new.env()
.ns$sum <- base::sum
.ns$logit <- pracma::logit
attach(.ns)

据我所知,要达到的目标没有简单的答案。 我唯一能想到的肮脏技巧是在从源代码安装(带有R CMD INSTALL软件包)之前,下载软件包“ matlab”,“ gtools”,“ pracma”的源代码,并从其NAMESPACE文件中删除有问题的功能。

但是,我建议使用显式表示法pracma :: logit,因为它可以提高代码对其他人和您自己的可读性。

该站点很好地概述了程序包名称空间: http : //r-pkgs.had.co.nz/namespace.html

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM