0

我目前正在开发一个名为“package_name”(这是我的要求)的 Golem Shiny 应用程序,我创建的一些函数需要使用{furrr}{future}包中的函数。但是,每当我尝试运行它们时,都会出现以下错误:

错误:没有名为“package_name”的包

请注意,只要不使用任何一个包的任何功能都可以正常工作。

有谁知道问题可能是什么?

谢谢 !

4

1 回答 1

0

使用 构建应用程序时{golem},您的计算机上未安装包含该应用程序的软件包。当您使用{future}时,代码在另一个 R 会话中运行,这意味着对象被传输并重新加载库。

但是,如果您尝试将当前应用程序内部的功能用于将来,则需要使其“可移植”,并且package_name::function()由于未安装您的软件包,因此使用将不起作用。

假设您需要使用current_app_fun(), 在您的包中定义。从技术上讲,{future}将能够传输此函数,因为它用于{globals}标识要传输到新 R 会话的对象。

observeEvent( input$bla , {
  # future() will identify that it needs to
  # transport current_app_fun()
  future({
    current_app_fun()
  })
})

为了格外小心,您还可以做一个额外的步骤:

observeEvent( input$bla , {
  func_for_future <- current_app_fun
  future({
    func_for_future()
  })
})

干杯,科林

于 2021-07-27T07:31:43.187 回答