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

将R Shiny应用封装为R包后调用失败的问题求助

解决R包函数未导出的问题

问题原因

你遇到的报错核心是:cohortpull函数没有被添加到包的NAMESPACE导出列表中。R包安装后,只有明确导出的函数才能通过rwdexpull::cohortpull()或加载包后直接调用;而直接在控制台运行函数代码是在全局环境执行,不受包的命名空间限制,所以能正常工作。

解决方案

方法1:用roxygen2自动导出(推荐,符合现代R包开发流程)

在你的函数文档注释中添加@export标签,修改后的代码如下:

#' Pull data from RWDEx data base
#'
#' @export
cohortpull <- function(){
  appDir <- system.file("pullapp", package = "rwdexpull")
  if (appDir == "") {
    stop("Could not find pullapp. Try re-installing `rwdexpull`.", call. = FALSE)
  }

  shiny::runApp(appDir, display.mode = "normal")
}

执行以下命令更新包的命名空间和文档:

# 如果使用devtools
devtools::document()

# 或者直接用roxygen2
roxygen2::roxygenize()

这会自动在包根目录的NAMESPACE文件中添加export(cohortpull)语句。

方法2:手动修改NAMESPACE文件

找到包根目录下的NAMESPACE文件,手动添加一行导出声明:

export(cohortpull)

保存文件后重新安装包。

验证步骤

  1. 重新安装包:devtools::install()(或用RStudio的"Install and Restart"按钮)
  2. 重启R会话
  3. 加载包:library(rwdexpull)
  4. 调用函数:cohortpull()

此时函数应该能正常启动Shiny应用,不再出现导出错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 02:04:52