在 R 中的命名空间中导入有什么好处?

2024-03-01

R 的命名空间机制允许人们export然后对用户可见的功能。此外,它还允许import来自其他包的函数。虽然出口的好处是显而易见的,但我在理解进口的好处时遇到了更多问题。

一个好处似乎是,可以使用其他包中的功能,而无需附加包,从而节省内存。这在章节中进行了举例说明1.6.4 编写R扩展手册 http://cran.r-project.org/doc/manuals/R-exts.html#An-example.

然而,导入功能肯定还有其他好处。尤其,第 1.6.6 节(涉及 S4 类) http://cran.r-project.org/doc/manuals/R-exts.html#Name-spaces-with-S4-classes-and-methods显示了namespacestats4 包的:

 export(mle)
 importFrom("graphics", plot)
 importFrom("stats", optim, qchisq)
 ## For these, we define methods or (AIC, BIC, nobs) an implicit generic:
 importFrom("stats", AIC, BIC, coef, confint, logLik, nobs, profile,
            update, vcov)
 exportClasses(mle, profile.mle, summary.mle)
 ## All methods for imported generics:
 exportMethods(coef, confint, logLik, plot, profile, summary, show, update, vcov)
 ## implicit generics which do not have any methods here
 export(AIC, BIC, nobs)

这里导入的函数既不是 S4 类也不是泛型(在这些函数中使用导入也是有意义的,如示例中所述)那个部分 http://cran.r-project.org/doc/manuals/R-exts.html#Name-spaces-with-S4-classes-and-methods),但功能类似于plot来自graphicsR启动时自动加载的包。

因此我的问题是,导入像这样的函数有什么好处plot, optim or qchisq?


如果一个函数foo从包 Bar 导入,然后无论用户对其搜索路径执行什么操作,例如通过附加也具有功能的包 Baz ,都会找到它foo。如果没有命名空间,包代码会突然发现自己使用Baz::foo。还有效率问题(foo立即找到,而不是在搜索路径上的所有符号之后找到),但这些对于大多数应用程序来说可能是微不足道的。同样地,importFrom是一个改进import因为更少的冲突(或使用非预期函数)和更高效的查找。

对于 S4(和 S3),事情可能会变得相当复杂。像这样的非泛型函数graphics::plot可以提升为通用(与setGeneric)在两个不同的包中,并且每个泛型都可以附加自己的一组方法。包作者希望准确说明是哪个plot通用,因此哪些方法调度表,它们的类和方法看到。

调用函数pkg::foo始终解析为预期功能。它要求将 pkg 列在描述文件的 Depends: 字段中(可能在 Imports: 中,但不从 pkg 导入似乎是误导性广告),从而污染用户的搜索路径。它还涉及两个符号查找和一个函数调用(::),因此效率较低。我的懒惰和缺乏对细节的关注也看到了使用::乏味且容易出错。

套餐代码工具BioC https://hedgehog.fhcrc.org/bioconductor/trunk/madman/Rpacks/codetoolsBioC(通过 svn 使用用户名和密码readonly)可以从现有包生成 NAMESPACE 文件(或者至少在最近对 R-devel 的更改之前可以在没有 NAMESPACE 的包上引入 NAMESPACE 之前;我还没有在这样的包上尝试过 codetoolsBioC )。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 R 中的命名空间中导入有什么好处? 的相关文章

  • 确定 R 中的组是否重复某个值

    我有一个包含许多列和行的数据 我想通过创建新的逻辑变量来确定某个组的值是否重复 相同 所以我的数据如下所示 v0 lt c 1 2 3 4 5 6 7 8 9 v1 lt c a b a c e c b b e v2 lt c R NA R
  • 如何导入 .tsv 文件

    我需要读取一个表 tsvR 中的文件 test lt read table file drug info tsv Error in scan file what nmax sep dec quote skip nlines na strin
  • R testthat 单元测试数据和辅助函数约定

    我正在编写一个 R 包 并使用 testthat 进行单元测试 我的许多单元测试都是为了测试适用于我的包特定对象的功能 对于这些测试 我创建了一个辅助函数来设置模拟对象 我还有一些其他辅助函数来减少单元测试中的代码量 目前这些辅助函数在我的
  • 从频率表生成 data.frame

    我在 2 4 数组中有包含 500 个观察值的合成数据 datax array c 120 181 50 43 41 33 24 8 dim c 2 4 dimnames datax list gender c male female pu
  • R 抑制系统或 shell 命令的控制台输出

    我有这个 Windows 批处理文件 我使用 R 从 R 调用该文件shell 命令 该批处理文件执行一些计算并将它们写入磁盘上 也写入屏幕上 我只对磁盘输出感兴趣 我无法更改批处理文件 批处理文件可能有点愚蠢 例如 echo off ec
  • R 中 x 轴曲线的阴影面积

    所以我有一个位于 x 轴下方和上方的图表 并且想要对线和 0 之间的区域进行着色 在这里 我尝试使用多边形函数 但它只给出曲线下的面积 plot year difference1 type l polygon year difference
  • 双向条形图,两侧带有正标签ggplot2

    我尝试在 ggplot 中创建一个双向条形图 其中轴上方和下方的轴标签和数据标签均为正值 例如 如果您的数据是 myData lt data frame category c yes yes no no month c Jan Feb Ja
  • 如何在主图区域之外的 ggplot2 中添加多个标题

    我想为页脚添加两个标题 但 ggplot 似乎只需要 1 是否有解决方法可以将注释或 geom text 添加到左下角和右下角 library ggplot2 p lt ggplot mtcars aes x wt y mpg geom p
  • 为“facet_wrap”中的每列创建边框和标题

    我想在每个方面周围放置带有标签和标题的黑色边框facet wrap 与此类似的东西 样本数据 library tidyverse mtcars gt mutate gear factor gear levels c 4 3 5 gt ggp
  • 如何在 R 树形图中省略标签?

    我一直在使用R 树形图包 http cran r project org web packages treemap treemap pdf我有一个 2 层深的树形图 我希望打印第二级标签 但不打印第一级标签 使用手册页中的示例 tmPlot
  • 如何在R中绘制仪表图表?

    如何在 R 中绘制以下图 Red 30 Yellow 40 Green 30 Needle at 52 所以这里有一个完整的ggplot解决方案 注意 从原始帖子中编辑 在仪表中断处添加数字指示器和标签 这似乎是OP在评论中所要求的 如果不
  • 合并具有一个共同元素的集合 R

    我有一个这样的列表 lista list lista 1 c 1 2 4 6 8 9 10 11 12 19 32 34 35 36 37 38 lista 2 c 7 8 lista 3 c 13 14 16 26 27 28 29 30
  • dmvnorm MVN 密度 - RcppArmadillo 实现比 R 包慢,包括一些 Fortran

    The solution现已上线RCPP画廊 http gallery rcpp org articles dmvnorm arma 我从 RcppArmadillo 中的 mvtnorm 包重新实现了 dmvnorm 我有点喜欢犰狳 但我
  • 使用 gtable 排列 ggplot 绘图(具有相同宽度的 grobs)以创建 2x2 布局

    我正在尝试使用 grobs 和 gtable 将 4 个 ggplot2 图排列成 2x2 网格 我不知道如何设置宽度 也不知道如何设置非 1xn 或 nx1 排列 使用此代码 data iris a lt ggplot iris aes
  • 如何在R中使用OpenNLP获取POS标签?

    这是 R 代码 library NLP library openNLP tagPOS lt function x s lt as String x word token annotator lt Maxent Word Token Anno
  • 向图像添加坐标,以用作 R 中的 Leaflet、Shiny 和 Shinydashboard 包中的地图

    我计划使用 Leaflet Shiny 和 Shinydashboard 沿着以下很棒的路线创建一个带有医院 OHS 事件标记的交互式地图交互式地图和直方图模板 http shiny rstudio com gallery superzip
  • 在 R 中使用 gsub 删除尾随空格[重复]

    这个问题在这里已经有答案了 有没有人有一个技巧可以用 gsub 删除变量上的尾随空格 以下是我的数据示例 正如您所看到的 我在变量中同时包含尾随空格和嵌入空格 county lt c mississippi mississippi cany
  • 绘制具有数据子集的图层时,因子水平的顺序会发生变化

    我试图控制图例中项目的顺序ggplot2我查找了其他一些类似的问题 并发现了如何更改我正在绘制的因子变量的水平顺序 我正在绘制 12 月 1 月 7 月和 6 月 4 个月的数据 如果我只对所有月份执行一个绘图命令 它会按预期工作 图例中排
  • 计算 R 中数据帧的每一行中特定值的连续出现次数

    我有一个data frame许多位置 这么多行 的变量的每月值 我想计算值为零的连续月份 即连续单元格 的数量 如果只是从左到右阅读 这很容易 但增加的复杂性是年底与年初是连续的 例如 在下面的缩短示例数据集中 用季节而不是月份 位置 1
  • 如何融合颜色和形状?

    当我有一个超过 6 个值的变量时 我的麻烦就开始了 因为这是 ggplot2 中 scale shape 函数的当前最大值 由于这个问题 我尝试使用另一个变量来解决这个问题 我只是将原始变量的长度包裹起来 这是我的示例代码 dataf lt

随机推荐

  • 根据两列的值删除行

    我有一个巨大的文件 my file txt 大约有 8 000 000 行 如下所示 1 13110 13110 rs540538026 0 NA 1 33177622457982 1 13116 13116 rs62635286 0 NA
  • 在基本控制器中重写 ASP.NET MVC 中的 OnAuthorization

    在我的 ASP NET MVC 应用程序中 我试图确定用户是否有权访问特定控制器 该控制器受授权数据注释的限制 如下所示 Authorize Roles user 我正在尝试覆盖 OnAuthorization 以检查 如果请求已通过身份验
  • 在 C# 中异步加载图像

    我正在开发一个 C WPF 应用程序 它加载大量图像并将其显示为缩略图 我想以多线程的方式来做 因此我尝试实现一个BackgroundWorker BackgroundWorker的DoWork 的代码 string files e Arg
  • 使用 @PreUpdate 的问题

    我有以下课程 MappedSuperclass public abstract class MappedModel Id GeneratedValue strategy GenerationType AUTO Column name id
  • 引用另一个矩阵后,numpy.ones 的第一行仍然被填充

    我有一个矩阵 A 其值如下所示 使用 numpy ones 创建矩阵 B 并通过索引 i 行和 j 列将值从 A 分配到 B 后 生成的 B 矩阵保留第一行 1 来自原始的 B 矩阵 我不确定为什么下面提供的代码会发生这种情况 命令行生成的
  • 如何以编程方式将单击事件分配给以编程方式创建的项目符号列表?

    我尝试以编程方式编写一个方法并将其分配为 onclick 事件调用的方法 但有些地方不对 该方法未被调用 BulletedList bulletList new BulletedList 我使用将项目添加到项目符号列表中bulletList
  • 为什么我的 ' 字符在发布到我的服务器时变成了 \'?

    我对HTML不是很强 每次都会遇到一些编码问题 在这里 我有一个类似的表格
  • 如何给子类提供静态字段?

    我有一个名为 operation java 的抽象超类和几个扩展该类并表示操作的子类 每个这样的子类应该包含一个规范化内容的数组 该数组应该是静态的 因为它全局保存 我有以下示例 abstract class Operation priva
  • Python继承:将所有参数从基类传递到超类

    我还不太习惯 Python 中的类继承 我想要做的只是在创建超类时将所有参数从基类传递给超类 class A def init self a b self a a self b b def do self c self a self b r
  • HTML 拖放 - 如何设置*传出*拖放(到桌面)的文件名

    我试图让用户可以将图标从网络浏览器拖动到桌面 并创建一个文本文件 我已经记下了内容部分 但我不知道如何设置文件名 我尝试过变异dataTransfer files但这是只读的 我不知道如何实现这一目标 class CrashReport e
  • 在 JMeter 的 BeanShell Sampler 中将字符串解析为整数

    我试图在 JMeter 中将字符串解析为整数 但由于以下错误而失败 如果我尝试打印 vars get 返回的字符串 它们看起来不错 2014 06 28 00 08 52 WARN jmeter assertions BeanShellAs
  • Hibernate:为什么使用或不使用类似天气的字段绑定显式@JoinColum注释?

    Is JoinColum当我们使用任何关联类型注释时隐式指定 例如 OneToOne OneToMany etc 这是摘自Student实体与Laptop实体 情况1 不使用显式 JoinColum OneToMany cascade Ca
  • boost::thread::id 的 tr1::hash 吗?

    我开始使用unordered set类来自tr1命名空间以加速对普通 基于树 STL 的访问map 但是 我想在 boost 中存储对线程 ID 的引用 boost thread id 并意识到这些标识符的 API 非常不透明 以至于您无法
  • 如何锁定和解锁 SQL SERVER 表?

    冒着过度解释我的问题的风险 我会错误地提供太多信息 我正在创建一个批量上传过程 将数据插入两个表中 这两个表大致如下所示 TableA是一个自引用表 允许 N 级引用 Parts self referencing table PartId
  • 语法错误,意外的 T_ENCAPSED_AND_WHITESPACE,期望 T_STRING 或 T_VARIABLE 或 T_NUM_STRING [重复]

    这个问题在这里已经有答案了 我已经盯着这个代码几个小时了 我不知道我的错误在哪里 我知道这种语法错误通常是由于缺少或不合适的大括号或单 双引号的一些问题而出现的 而且我不确定我的代码中是否存在这样的错误 我现在只是想修复我的语法 以便我可以
  • 模板部分专业化 - 有现实世界的例子吗?

    我正在思考partial specialization 虽然我理解这个想法 但我还没有看到这种技术在现实世界中的任何用法 Full specialization被用在很多地方STL所以我对此没有问题 你能告诉我一个现实世界的例子吗 part
  • 在 Mercurial 中进行合并时忽略空格

    在 Mercurial 中进行合并时 我们遇到了一个问题 其中空白更改会导致合并冲突 从而掩盖了我们可能遇到的任何 真实 冲突 并使合并成为一场噩梦 我们最近遵循了一种格式样式 该样式更改了某些分支中文件的缩进 并且从那时起合并几乎变得不可
  • 如何在Java字符类中表示空字符

    我想在 Java 中将空字符表示为 在字符串中 像那样char ch an empty character 其实我想替换一个字符而不留空格 我认为理解这意味着什么就足够了 没有字符 甚至没有空间 您可以分配 u0000 或 0 为此 请使用
  • 使用对话框框架的 primefaces 对话框未弹出

    我正在尝试使用 primefaces 对话框框架来简化我的代码 我已经按照 primefaces 4 0 用户指南中的示例进行操作 但它不起作用 我几乎逐字复制了该示例 创建了三个文件 一个包含对话框的文件 一个调用对话框的文件和一个支持
  • 在 R 中的命名空间中导入有什么好处?

    R 的命名空间机制允许人们export然后对用户可见的功能 此外 它还允许import来自其他包的函数 虽然出口的好处是显而易见的 但我在理解进口的好处时遇到了更多问题 一个好处似乎是 可以使用其他包中的功能 而无需附加包 从而节省内存 这