1

不幸的是,我的代码不可共享,因为它是用于公司项目的,但我完全迷失了这个错误。我已经卸载并重新安装了 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 似乎并不能解决我的闪亮问题,但它再次在本地工作。

4

2 回答 2

4

请研究安装指南的这一部分: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,并且是长期存在的。

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

当你调查这个问题时,你能否给我尽可能多的细节,比如你升级的时间,你是如何升级的(从源代码或二进制文件)等等。我假设你在 Windows 上,因为这是主要的由于 DLL 锁定而发生此类问题的平台。请始终包含sessionInfo()在报告中。

于 2019-10-25T00:01:37.010 回答
0

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

于 2019-10-28T17:06:02.897 回答