选择要从 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()
所有这些小实用功能吗?
也许我需要定义自己的默认命名空间?
据我所知,您想要实现的目标没有简单的答案。我能想到的唯一肮脏的 hack 是下载包的源代码 "matlab"、"gtools"、"pracma" 并在从源代码安装之前从它们的 NAMESPACE 文件中删除有问题的函数(使用 R CMD 安装包)。
但是,我建议使用显式表示法 pracma::logit,因为它可以提高您的代码将来对其他人和您自己的可读性。
该站点很好地概述了包命名空间:
http://r-pkgs.had.co.nz/namespace.html
为了避免破坏您的 ls
,您可以这样做:
.ns <- new.env()
.ns$sum <- base::sum
.ns$logit <- pracma::logit
attach(.ns)
我喜欢使用 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()
所有这些小实用功能吗?
也许我需要定义自己的默认命名空间?
据我所知,您想要实现的目标没有简单的答案。我能想到的唯一肮脏的 hack 是下载包的源代码 "matlab"、"gtools"、"pracma" 并在从源代码安装之前从它们的 NAMESPACE 文件中删除有问题的函数(使用 R CMD 安装包)。
但是,我建议使用显式表示法 pracma::logit,因为它可以提高您的代码将来对其他人和您自己的可读性。
该站点很好地概述了包命名空间: http://r-pkgs.had.co.nz/namespace.html
为了避免破坏您的 ls
,您可以这样做:
.ns <- new.env()
.ns$sum <- base::sum
.ns$logit <- pracma::logit
attach(.ns)