代码之家  ›  专栏  ›  技术社区  ›  andrewH

R:如何防止(或者至少预期)基本R函数内部的代码与以后安装的包中的函数之间的名称冲突?

  •  1
  • andrewH  · 技术社区  · 7 年前

    我有一个包裹( tidyverse )已加载,用于重命名基r函数( filter )中。

    我在运行一个基r函数( arima.sim )这就叫 滤波器 函数并返回错误 dplyr::filter.ts 是的。

    我可以从 阿里玛·西姆 创造 arima.sim2 替代 滤波器 具有 stats::filter ,这就解决了问题。但是:

    1. 这个 dplyr 功能 dplyr::过滤器.ts 有益的阅读:

      dplyr::过滤器.ts 函数(.data,…) { 错误的参数(“.data”,“必须是数据源,而不是ts对象,是否 stats::filter() “?” }

    除了加载时的警告之外,还有什么应该提醒我注意这个冲突的吗 潮人 是吗?因为当我收到警告的时候,我不知道我会跑 滤波器 ,当时没有读过 stats::arima.sim 是的。

    1. 为什么不 统计:arima.sim 找到 滤波器 stats namespace 在看之前 dplyr namespace 是吗?包名称空间不应该阻止这类事情吗?

    2. 缺少用 :: 如上所述,是否可以或应该做些什么来确保base r函数可以找到它们定义中使用的其他baser函数,而不是使用以后安装的包中的同名函数?

    1 回复  |  直到 7 年前
        1
  •  0
  •   Clemens Hug    7 年前

    你可以尝试使用新的 conflicted 包裹。它的目的是避免这样的问题,迫使用户明确,以防有任何歧义。不确定这是否对你的具体情况有帮助,我无法重现你所描述的行为。

    推荐文章