问题描述
我目前正在开发名为“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()
})
})
干杯, 科林