在 Golem Shiny 应用程序中使用 {future} 和 {furrr} 函数时出现错误,它来自什么?

问题描述

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

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

请注意,任何不使用任何一个包的函数都可以正常工作。

有人知道可能是什么问题吗?

谢谢!

解决方法

使用 {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()
  })
})

干杯, 科林

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...