You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在R包中隐藏内部数据,仅供包内函数调用并简化用户操作?

R包内部私有数据配置与函数调用方案

问题1:添加仅包内可访问的私有数据

你之前用usethis/devtools创建公开数据的方式会把数据放到data/目录,导致用户能看到。要创建私有内部数据,按以下步骤操作:

  • 确保目标数据对象(比如ice_cream_flavours)已在包开发环境中准备好
  • 在包根目录下运行命令:
devtools::use_data(ice_cream_flavours, internal = TRUE)

该命令会将数据保存到R/sysdata.rda文件中,此文件内的对象属于包的内部环境,不会被导出到用户可见的命名空间。用户输入fat_pats_tools::时,不会看到这些数据文件名。

问题2:包内函数引用内部数据

修改你的函数,直接在函数内部调用私有数据即可,无需用户传入。示例如下:
原函数:

ice_cream_detector_function <- function(user_data, my_df) {
  # 原函数逻辑
}

修改为:

ice_cream_detector_function <- function(user_data) {
  # 直接调用包内部的私有数据
  my_df <- ice_cream_flavours
  # 原函数逻辑保持不变
}

由于ice_cream_flavours保存在包内部的sysdata.rda中,包内函数可直接访问该对象,R会自动在当前包的内部环境中查找。

如果要避免与全局环境同名对象冲突,也可以用包内部访问符:::明确引用:

my_df <- fat_pats_tools:::ice_cream_flavours

不过只要函数属于包的一部分,直接使用对象名就足够安全。

重新构建并安装包后,用户就能按期望的方式调用函数,且输入fat_pats_tools::时只会看到函数列表。

内容的提问来源于stack exchange,提问作者Fat Pat

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 23:35:30