r - 开发 R 包时避免导入包
问题描述
假设我正在开发一个 R 包,其中我只使用包“P”中的一个函数(例如,函数“F”)。我会使用函数“F”的输出在我的函数中执行其他操作。
为此,我将在描述的“导入:”部分中包含包“P”。
因为“P”是要导入的包,所以当有人安装我的包时,她最终也会安装包“P”,因为我在包中的某个函数中使用了它的一个函数,函数“F”。
我的问题如下:
- 如何避免强迫用户安装整个包“P”?
- 也就是说,我可以让用户只安装包“P”中的功能“F”吗?
- 我可以将“F”函数的源代码复制并粘贴到我的包中,这样用户就不必安装整个包“P”吗?
- 问题 3 的答案是否取决于软件包“P”所在的许可证?
解决方案
以下是您的问题的答案
如果该软件包不可用,则使您的功能不可用或功能失调。您的函数必须检查包 P 是否可用,如果不可用,则抛出错误或警告并返回。这意味着用户可以决定安装包 P 以获取包的功能。
没门
或许,请参见 4。实际上,这取决于.
是的。
如果您和您的包裹都可以接受限制(减少功能),那么答案 1 对我来说是一个简单的建议。
Route 3 是另一个可行的选择。这取决于几件事。
首先是许可证。
除此之外,没有什么能真正阻止你。
但是 - 我会花一些时间试图改善这种情况。
Package P 是不是设计得很糟糕?是不是臃肿?我会联系作者并解释问题。人们聚在一起交谈,出乎意料地轻松解决了各种问题。他或她也许是一个欢迎对他或她的工作感兴趣的好人。大多数人都是。
将社区代码库碎片化(就像你从其他包中撕下东西一样),整体上可能并不好。
推荐阅读
- javascript - 将通用 React 组件转换为 TypeScript 会引发错误
- java - 如何在错误 Spring WebFlux 上调用另一个 api
- vega-lite - 如何使用 Vega-lite ObservableHQ 添加简单的点击事件?
- excel - 用于输出 TSV 的 Excel VBA 脚本给出了前导和尾随双引号,我该如何删除它们
- javascript - 如何在 mapbox 中禁用事件监听器?
- c++ - 如何在VS2019 CUDA项目中启用C++17代码生成
- r - R:效果包 | 混合效应模型。绘制模型估计
- css - 调整大小时 CSS 网格项不跨越设置的列
- docker - Nginx 在 dockerized react 应用程序中尝试获取子路由时返回 404
- python - python:有时会忽略影响