Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R:无法加载data.table,因为缺少符号\u omp\u set\u num\u线程_R_Data.table - Fatal编程技术网

R:无法加载data.table,因为缺少符号\u omp\u set\u num\u线程

R:无法加载data.table,因为缺少符号\u omp\u set\u num\u线程,r,data.table,R,Data.table,我有一个带有导入列表的R包,在加载最新版本时从来没有遇到过问题。我刚刚将data.table添加到列表中,现在无法加载包 操作系统:macOS Sierra 10.12.5/6 gcc: Configured with: --prefix=/Library/Developer/CommandLineTools/usr --with-gxx-include-dir=/usr/include/c++/4.2.1 Apple LLVM version 9.0.0 (clang-900.0.37) Ta

我有一个带有导入列表的R包,在加载最新版本时从来没有遇到过问题。我刚刚将
data.table
添加到列表中,现在无法加载包

操作系统:macOS Sierra 10.12.5/6

gcc

Configured with: --prefix=/Library/Developer/CommandLineTools/usr --with-gxx-include-dir=/usr/include/c++/4.2.1
Apple LLVM version 9.0.0 (clang-900.0.37)
Target: x86_64-apple-darwin16.7.0
Thread model: posix
导入

aws.s3,
data.table,
googledrive,
httr,
jsonlite,
lubridate,
plyr
RMixpanel,
rmongodb,
RPresto,
stringi,
stringr,
uuid
openmp-utils.c:50:5: warning: implicit declaration of function 'omp_set_num_threads' is invalid in C99 [-Wimplicit-function-declaration]
omp_set_num_threads(1);
^
1 warning generated.

...

Error: package or namespace load failed for ‘data.table’ in dyn.load(file, DLLpath = DLLpath, ...):
unable to load shared object '/usr/local/lib/R/3.4/site-library/data.table/libs/datatable.so':
dlopen(/usr/local/lib/R/3.4/site-library/data.table/libs/datatable.so, 6): Symbol not found: _omp_set_num_threads

Referenced from: /usr/local/lib/R/3.4/site-library/data.table/libs/datatable.so

Expected in: flat namespace in /usr/local/lib/R/3.4/site-library/data.table/libs/datatable.so

Error: loading failed
错误

aws.s3,
data.table,
googledrive,
httr,
jsonlite,
lubridate,
plyr
RMixpanel,
rmongodb,
RPresto,
stringi,
stringr,
uuid
openmp-utils.c:50:5: warning: implicit declaration of function 'omp_set_num_threads' is invalid in C99 [-Wimplicit-function-declaration]
omp_set_num_threads(1);
^
1 warning generated.

...

Error: package or namespace load failed for ‘data.table’ in dyn.load(file, DLLpath = DLLpath, ...):
unable to load shared object '/usr/local/lib/R/3.4/site-library/data.table/libs/datatable.so':
dlopen(/usr/local/lib/R/3.4/site-library/data.table/libs/datatable.so, 6): Symbol not found: _omp_set_num_threads

Referenced from: /usr/local/lib/R/3.4/site-library/data.table/libs/datatable.so

Expected in: flat namespace in /usr/local/lib/R/3.4/site-library/data.table/libs/datatable.so

Error: loading failed

我还尝试将
plyr
移动到高于
data.table
,但得到了相同的错误。有什么想法吗?

我昨天也遇到了同样的问题,在谷歌搜索之后,我通过指定~./R/Makevars安装了
data.table

在我的例子中,我使用macports并安装了gcc7。gcc-mp-7和g++-mp-7引用了macports下的哪些

因此,要指定编译器在macOS上使用这些命令而不是默认命令,您需要创建一个文件~./R/Makevars。然后添加以下行:

CC=gcc-mp-7-fopenmp
CXX=g++-mp-7-fopenmp


您也应该能够对较新版本的
clang
执行相同操作,只需将
gcc-mp-7
更改为
clangomp
(或根据安装位置而定的等效版本)为了启用多线程,请不要忘记相同的
-fopenmp
标志。

我修复了错误,并将1.10.4-2推到了CRAN

  • MacOS上的OpenMP现在由CRAN支持,并包含在CRAN针对Mac的二进制软件包中。但在编译时未启用OpenMP时,在MacOS上从源代码安装v1.10.4-1失败。感谢Liz Macfie和@Fupang的报道。OpenMP未启用时的启动消息已更新

我在发布程序中添加了一个额外的步骤,以防止将来发生这种情况。

您是否刚刚升级到昨天在CRAN上发布的1.10.4-1?在新的R会话中,
test.data.table()
?怀疑这是安装/升级问题。当您使用
parallel
软件包fork时,会调用该行。您正在使用
并行
软件包吗?这是我在这个补丁中改变的东西,所以我很可能会责怪它。我们可以查看您的完整安装输出,看看它是否在安装时找到openMP。我现在知道了。是我的错。当OpenMP不可用时,我没有将呼叫包装在#ifdef中。很难测试像这样的东西,因为我们必须卸载OpenMP来测试它。我们需要查看安装的完整输出,以查看您正在使用的编译器和版本。这是哪个操作系统?基本上:你没有OpenMP,所以它不会工作,我犯了一个错误,不让它在没有OpenMP的情况下安装。我可以用另一个补丁修复,但它会为你安装单线程,所以你还是想要OpenMP。太棒了!谢谢你的发现。将在GitHub上跟踪更新何时可用。请问在过渡期间我可以使用什么以前的版本?或者遵循。