[英]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.