【问题标题】:R shiny app works locally, but after deployment, I get an error with I believe data.table: object 'CcopyNamedInList' not foundR 闪亮的应用程序在本地工作,但部署后,我得到一个错误,我相信 data.table: object 'CcopyNamedInList' not found
【发布时间】:2020-02-21 02:36:43
【问题描述】:

不幸的是,我的代码不可共享,因为它是用于公司项目的,但我完全被这个错误迷失了。我已经卸载并重新安装了 data.table 仍然没有修复。奇怪的是,我认为这个错误也会在本地发生,但事实并非如此! data.table 在本地工作正常。我想要一个可重现的例子,但我想不出来,因为它可以在本地工作!

编辑:好的,我猜发生了什么

###Coerce to factors for clean 2x2's.
a_tab <- factor(data_fin$a_result_final,levels = c("Positive","Negative")) 
t_tab <- factor(data_fin$t_result_final,levels = c("Positive","Negative"))
p_tab <- factor(data_fin$p_result_final,levels = c("Positive","Negative"))

tdf <- data.frame(a_tab,c_tab,p_tab)

#Create contingency tables
table <- table(tdf$a_tab,tdf$c_tab,dnn = c("Test 1","Test 2")) %>%
  addmargins(margin = c(1,2),FUN = sum)
print('made B Table')
table_2 <- table(tdf$a_tab,tdf$c_tab,dnn = c("Test 1","Test 3")) %>%
  addmargins(margin = c(1,2),FUN = sum)
print('made C Table')

Warning:Error: object 'CcopyNamedInList' not found

我无法共享数据,但这些因素来自一个数据框,其中包含多个数据条目,例如“阳性”、“阴性”和“无效”。希望这遵循更好的提问标准。

编辑: 好的,所以我一直在重新启动 R 并运行您列出的说明 `

test.data.table()
getDTthreads(verbose=TRUE):
  omp_get_num_procs()            4
  R_DATATABLE_NUM_PROCS_PERCENT  unset (default 50)
  R_DATATABLE_NUM_THREADS        unset
  omp_get_thread_limit()         2147483647
  omp_get_max_threads()          4
  OMP_THREAD_LIMIT               unset
  OMP_NUM_THREADS                unset
  RestoreAfterFork               true
  data.table is using 2 threads. See ?setDTthreads.
test.data.table() running: C:/Users/jkramp/Documents/R/win-library/3.6/data.table/tests/tests.Rraw.bz2 
Running test id 2120.08        
10 longest running tests took 56s (33% of 168s)
      ID time nTest
 1: 1438 8.58   738
 2: 1835 8.38     1
 3: 1648 6.17    91
 4: 1652 5.74    91
 5: 1650 5.71    91
 6: 1223 5.39   728
 7: 1848 4.39     1
 8: 1644 4.30    91
 9: 1642 4.19    91
10: 1646 4.12    91
endian==little, sizeof(long double)==16, sizeof(pointer)==8, TZ=America/Los_Angeles, locale='LC_COLLATE=English_United States.1252;LC_CTYPE=English_United States.1252;LC_MONETARY=English_United States.1252;LC_NUMERIC=C;LC_TIME=English_United States.1252', l10n_info()='MBCS=FALSE; UTF-8=FALSE; Latin-1=TRUE; codepage=1252', getDTthreads()='omp_get_num_procs()==4; R_DATATABLE_NUM_PROCS_PERCENT==unset (default 50); R_DATATABLE_NUM_THREADS==unset; omp_get_thread_limit()==2147483647; omp_get_max_threads()==4; OMP_THREAD_LIMIT==unset; OMP_NUM_THREADS==unset; RestoreAfterFork==true; data.table is using 2 threads. See ?setDTthreads.'

All 9643 tests in tests/tests.Rraw.bz2 completed ok in 00:02:48 elapsed (00:01:50 cpu) on Fri Oct 25 14:22:24 2019

install.packages('expss')
WARNING: Rtools is required to build R packages but is not currently installed. Please download and install the appropriate version of Rtools before proceeding:

https://cran.rstudio.com/bin/windows/Rtools/
Installing package into ‘C:/Users/jkramp/Documents/R/win-library/3.6’
(as ‘lib’ is unspecified)
trying URL 'https://cran.rstudio.com/bin/windows/contrib/3.6/expss_0.9.1.zip'
Content type 'application/zip' length 1867278 bytes (1.8 MB)
downloaded 1.8 MB

package ‘expss’ successfully unpacked and MD5 sums checked

The downloaded binary packages are in
    C:\Users\jkramp\AppData\Local\Temp\Rtmpy49ttd\downloaded_packages

一切似乎都安装得很好。我也重新安装了expss。我确实收到了关于 Rtools 的警告,但我认为这可能是一个单独的问题?这是我闪亮日志的直接输出:

2019-10-25T21:44:01.961646+00:00 shinyapps[929961]: Warning: Error in data.table: object 'CcopyNamedInList' not found
2019-10-25T21:44:01.966388+00:00 shinyapps[929961]:   67: lapply
2019-10-25T21:44:01.966383+00:00 shinyapps[929961]:   75: data.table
2019-10-25T21:44:01.966388+00:00 shinyapps[929961]:   66: multi_cro
2019-10-25T21:44:01.966384+00:00 shinyapps[929961]:   74: make_datatable_for_cro
2019-10-25T21:44:01.966389+00:00 shinyapps[929961]:   65: cro
2019-10-25T21:44:01.966385+00:00 shinyapps[929961]:   73: elementary_cro
2019-10-25T21:44:01.966386+00:00 shinyapps[929961]:   72: FUN
2019-10-25T21:44:01.966386+00:00 shinyapps[929961]:   71: lapply
2019-10-25T21:44:01.966640+00:00 shinyapps[929961]: Error in data.table(cell_var, col_var, weight) : 
2019-10-25T21:44:01.966641+00:00 shinyapps[929961]:   object 'CcopyNamedInList' not found
2019-10-25T21:44:01.966391+00:00 shinyapps[929961]:   61: server [/srv/connect/apps/1143_r_dashboard/app.R#192]
2019-10-25T21:44:01.966389+00:00 shinyapps[929961]:   64: as.etable.table

应用程序在使用 expss 的过程中似乎崩溃了,但说这是一个 data.table 问题。安装和更新 expss 似乎并不能解决我的闪亮问题,但它再次在本地工作。

【问题讨论】:

  • 我了解您的代码不可共享,但没有代码几乎无法提供帮助。如果您可以混淆部分代码和数据并用它编辑您的问题,那么最终有人可以提供帮助。但就目前而言,由于“过于广泛”,您的问题肯定会被否决或关闭。
  • CcopyNamedInList 是在最近升级中删除的内部 data.table 对象。您是否使用::: 来访问内部对象?在整个代码树中搜索:::。在您的服务器上尝试test.data.table()。如果这不起作用,那么您的安装有问题。 data.table 在启动时检查 R 代码版本是否与 .so/.dll 匹配。请报告您的操作系统。请关闭所有 Windows 进程并重新安装干净。
  • 这个闪亮的cro 输出是什么?也许这与Shiny有关。你能问他们是否知道吗?它指向什么? /srv/connect/apps/1143_r_dashboard/app.R#192
  • Shiny 有一个服务器,你必须重新启动,还是什么?

标签: r data.table expss


【解决方案1】:

请阅读这部分安装指南:https://github.com/Rdatatable/data.table/wiki/Installation#windows

包含:

在 Windows 上,当升级任何使用编译代码的包时,在升级之前关闭所有 R 会话似乎很重要。这会释放 Windows 在 dll 上持有的所有锁。可以肯定的是,也请重新启动。然后打开一个新的新 R 会话。一些用户有一个 .Rprofile 文件,该文件会在任何 R 会话启动时自动加载 data.table。您可能没有 .Rprofile 文件,但如果您有,并且它会加载任何包(它们本身可能会加载 data.table),请临时重命名 .Rprofile 或在启动 R 时传递 --vanilla 以防止它运行 .Rprofile。一旦你有一个没有加载 data.table 的新 R 会话,继续安装。

测试您的安装
require(data.table)
test.data.table()
如果test.data.table() 失败,那么您就知道安装没有正常工作。 Windows 上的典型问题包括功能缺失或参数不匹配。这些问题可能会导致崩溃。重新启动您的 Windows 计算机以清除所有 dll 锁定并再次重新安装 .zip。 test.data.table() 是测试安装的可靠方法。全套超过 5,000 项测试在您的计算机上本地运行,耗时不应超过 2 分钟。

“Windows 上的典型问题涉及功能缺失或参数不匹配”与您看到的错误位于同一区域:Error: object 'CcopyNamedInList' not found

另外,请参阅 2019 年 1 月 v1.12.0 的注释 1:

当 data.table 加载时,它现在会根据其 R 级代码的版本检查其 DLL 版本。这是为了在以下情况下检测 Windows 上的安装问题:i) DLL 正在被另一个 R 会话使用,并且 ii) CRAN 源版本 > CRAN 二进制二进制,这发生在新版本之后(R 提示用户从源安装直到 CRAN 二进制可用)。这种情况会导致包的新 R 代码调用旧 DLL 中的旧 C 代码的状态; R#17478,#3056。这种破坏状态可能会持续存在,直到您遇到由不匹配引起的奇怪错误。否则,错误的结果可能会悄无声息地出现。这种情况适用于任何具有编译代码的 R 包,而不仅仅是 data.table,仅限 Windows,并且是长期存在的。直到最近才被理解,因为它通常只发生在每个新版本发布后的几天内,直到二进制文件在 CRAN 上可用。

所以我尽我所能在 Windows 上发现这样的问题。据我所知,data.table 是 CRAN 上唯一可以自我检查的包。它在加载时会检查自己。我所能想到的是,当你写它在服务器上不起作用时,你的意思是你有一个 R 会话已经打开了很多天或几周,而你还没有重新启动它。这是我认为可以逃避 R/dll 版本匹配检查的唯一方法。

当您调查此问题时,能否提供尽可能详细的信息,如升级时间、升级方式(从源代码或二进制文件)等。我假设您使用的是 Windows,因为这是由于 DLL 锁定而发生此类问题的主要平台。请始终在报告中包含sessionInfo()

【讨论】:

  • 它不仅在 Windows 上。在 data.table 的新版本发布后,我经常遇到类似github.com/gdemin/expss/issues/42 的问题。正如您在第一个链接中看到的那样,MacO 上的错误会上升。我个人在Linux下遇到过。该错误很难重现,但在大多数情况下,重新安装 data.table 和 expss 会有所帮助。
  • 请查看我的新编辑,其中包含更多错误信息和 test.data.table() 的结果。我错过了什么吗?
  • @Jdev 也许这与 Shiny 有关。你能问他们是否知道吗?它指向什么? /srv/connect/apps/1143_r_dashboard/app.R#192
  • @GregoryDe​​min 这值得关注。但我没有足够的继续。你看过我在 data.table 中检查 DLL 和 R 代码的版本检查吗?那到底怎么可能还在发生呢?我需要您的帮助以提供有关如何升级的更多信息。每当我升级时,我总是小心地先关闭所有 R 会话,然后使用一个新会话进行升级。当您不这样做时,就会出现问题。会不会是这个问题?
  • @MattDowle test.data.table() - github.com/gdemin/expss/issues/42#issuecomment-547046784 的结果。也许,我在 expss 内部做错了,但我绝对不会调用内部 data.table 函数。
【解决方案2】:

部署到闪亮时似乎是 expss 包的错误。闪亮的支持正在努力寻找答案,但我最终重写了我的一些代码块,用闪亮包和基础 R 中的替代函数替换 expss 来解决问题。谢谢大家的意见,但我不能再花时间调查这个问题,因为我有最后期限。我想我必须以其他方式为 Excel 下载制作列联表。

【讨论】:

  • 我是 expss 包的作者。我在相当复杂的应用程序中经常将它与 Shiny 一起使用,但我没有看到任何这样的错误。
  • 此外,我有几乎 100% 的测试覆盖率,并且这些测试在 CRAN 上没有错误 - cran.r-project.org/web/checks/check_results_expss.html
猜你喜欢
  • 2020-03-12
  • 1970-01-01
  • 2016-04-22
  • 1970-01-01
  • 2018-05-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-17
相关资源
最近更新 更多