2016-07-04 34 views
3

我想安装在R上的包xgboost按指令:特有的安装警告导致包故障

install.packages("drat", repos="https://cran.rstudio.com") 
drat:::addRepo("dmlc") 
install.packages("xgboost", repos="http://dmlc.ml/drat/", type = "source") 

前两个软件包的安装似乎很好地工作:

install.packages("drat", repos="https://cran.rstudio.com") 
    % Total % Received % Xferd Average Speed Time Time  Time Current 
           Dload Upload Total Spent Left Speed 
    0  0 0  0 0  0  0  0 --:--:-- --:--:-- --:--:--  0 0 49369 0  0 0  0  0  0 --:--:-- 0:00:01 --:--:--  0100 49369 100 49369 0  0 40981  0 0:00:01 0:00:01 --:--:-- 41004 

The downloaded binary packages are in 
    /var/folders/sx/c5z57jp103s493xxcn9bhvwc0000gn/T//RtmpluolUL/downloaded_packages 

drat:::addRepo("dmlc") 

但是xgboost的最终安装实际上是不规则的,并且我无法在之前的帖子中修正错误:

% Total % Received % Xferd Average Speed Time Time  Time Current 
           Dload Upload Total Spent Left Speed 
    0  0 0  0 0  0  0  0 --:--:-- --:--:-- --:--:--  0100 351k 100 351k 0  0 550k  0 --:--:-- --:--:-- --:--:-- 550k 
* installing *source* package ‘xgboost’ ... 
** libs 
clang++ -std=c++11 -I/Library/Frameworks/R.framework/Resources/include -DNDEBUG -I./include -I./dmlc-core/include -I./rabit/include -I. -DXGBOOST_STRICT_R_MODE=1 -DDMLC_LOG_BEFORE_THROW=0 -DDMLC_ENABLE_STD_THREAD=0 -DDMLC_DISABLE_STDIN=1 -DDMLC_LOG_CUSTOMIZE=1 -DXGBOOST_CUSTOMIZE_LOGGER=1 -DRABIT_CUSTOMIZE_MSG_ -DRABIT_STRICT_CXX98_ -I/usr/local/include -I/usr/local/include/freetype2 -I/opt/X11/include  -fPIC -Wall -mtune=core2 -g -O2 -c xgboost_R.cc -o xgboost_R.o 
In file included from xgboost_R.cc:3: 
./dmlc-core/include/dmlc/omp.h:13:9: warning: Warning: OpenMP is not available, project will be compiled into single-thread code. Use OpenMP-enabled compiler to get benefit of multi-threading. [-W#pragma-messages] 
#pragma message("Warning: OpenMP is not available, "     \ 
     ^
1 warning generated. 
clang++ -std=c++11 -I/Library/Frameworks/R.framework/Resources/include -DNDEBUG -I./include -I./dmlc-core/include -I./rabit/include -I. -DXGBOOST_STRICT_R_MODE=1 -DDMLC_LOG_BEFORE_THROW=0 -DDMLC_ENABLE_STD_THREAD=0 -DDMLC_DISABLE_STDIN=1 -DDMLC_LOG_CUSTOMIZE=1 -DXGBOOST_CUSTOMIZE_LOGGER=1 -DRABIT_CUSTOMIZE_MSG_ -DRABIT_STRICT_CXX98_ -I/usr/local/include -I/usr/local/include/freetype2 -I/opt/X11/include  -fPIC -Wall -mtune=core2 -g -O2 -c xgboost_custom.cc -o xgboost_custom.o 
In file included from xgboost_custom.cc:5: 
In file included from ./include/xgboost/logging.h:13: 
In file included from ./include/xgboost/./base.h:10: 
./dmlc-core/include/dmlc/omp.h:13:9: warning: Warning: OpenMP is not available, project will be compiled into single-thread code. Use OpenMP-enabled compiler to get benefit of multi-threading. [-W#pragma-messages] 
#pragma message("Warning: OpenMP is not available, "     \ 
     ^
1 warning generated. 
clang -I/Library/Frameworks/R.framework/Resources/include -DNDEBUG -I./include -I./dmlc-core/include -I./rabit/include -I. -DXGBOOST_STRICT_R_MODE=1 -DDMLC_LOG_BEFORE_THROW=0 -DDMLC_ENABLE_STD_THREAD=0 -DDMLC_DISABLE_STDIN=1 -DDMLC_LOG_CUSTOMIZE=1 -DXGBOOST_CUSTOMIZE_LOGGER=1 -DRABIT_CUSTOMIZE_MSG_ -DRABIT_STRICT_CXX98_ -I/usr/local/include -I/usr/local/include/freetype2 -I/opt/X11/include -fPIC -Wall -mtune=core2 -g -O2 -c xgboost_assert.c -o xgboost_assert.o 
clang++ -std=c++11 -I/Library/Frameworks/R.framework/Resources/include -DNDEBUG -I./include -I./dmlc-core/include -I./rabit/include -I. -DXGBOOST_STRICT_R_MODE=1 -DDMLC_LOG_BEFORE_THROW=0 -DDMLC_ENABLE_STD_THREAD=0 -DDMLC_DISABLE_STDIN=1 -DDMLC_LOG_CUSTOMIZE=1 -DXGBOOST_CUSTOMIZE_LOGGER=1 -DRABIT_CUSTOMIZE_MSG_ -DRABIT_STRICT_CXX98_ -I/usr/local/include -I/usr/local/include/freetype2 -I/opt/X11/include  -fPIC -Wall -mtune=core2 -g -O2 -c amalgamation/xgboost-all0.cc -o amalgamation/xgboost-all0.o 
In file included from amalgamation/xgboost-all0.cc:13: 
In file included from amalgamation/../src/metric/metric.cc:6: 
In file included from ./include/xgboost/metric.h:14: 
In file included from ./include/xgboost/./data.h:15: 
In file included from ./include/xgboost/./base.h:10: 
./dmlc-core/include/dmlc/omp.h:13:9: warning: Warning: OpenMP is not available, project will be compiled into single-thread code. Use OpenMP-enabled compiler to get benefit of multi-threading. [-W#pragma-messages] 
#pragma message("Warning: OpenMP is not available, "     \ 
     ^
1 warning generated. 
clang++ -std=c++11 -I/Library/Frameworks/R.framework/Resources/include -DNDEBUG -I./include -I./dmlc-core/include -I./rabit/include -I. -DXGBOOST_STRICT_R_MODE=1 -DDMLC_LOG_BEFORE_THROW=0 -DDMLC_ENABLE_STD_THREAD=0 -DDMLC_DISABLE_STDIN=1 -DDMLC_LOG_CUSTOMIZE=1 -DXGBOOST_CUSTOMIZE_LOGGER=1 -DRABIT_CUSTOMIZE_MSG_ -DRABIT_STRICT_CXX98_ -I/usr/local/include -I/usr/local/include/freetype2 -I/opt/X11/include  -fPIC -Wall -mtune=core2 -g -O2 -c amalgamation/dmlc-minimum0.cc -o amalgamation/dmlc-minimum0.o 
In file included from amalgamation/dmlc-minimum0.cc:8: 
amalgamation/../dmlc-core/src/io/input_split_base.cc:26:22: warning: assigning field to itself [-Wself-assign-field] 
    this->align_bytes_ = align_bytes_; 
        ^
In file included from amalgamation/dmlc-minimum0.cc:10: 
In file included from amalgamation/../dmlc-core/src/data.cc:12: 
In file included from amalgamation/../dmlc-core/src/data/disk_row_iter.h:19: 
In file included from amalgamation/../dmlc-core/src/data/./libsvm_parser.h:13: 
In file included from amalgamation/../dmlc-core/src/data/./text_parser.h:11: 
./dmlc-core/include/dmlc/omp.h:13:9: warning: Warning: OpenMP is not available, project will be compiled into single-thread code. Use OpenMP-enabled compiler to get benefit of multi-threading. [-W#pragma-messages] 
#pragma message("Warning: OpenMP is not available, "     \ 
     ^
2 warnings generated. 
clang++ -std=c++11 -I/Library/Frameworks/R.framework/Resources/include -DNDEBUG -I./include -I./dmlc-core/include -I./rabit/include -I. -DXGBOOST_STRICT_R_MODE=1 -DDMLC_LOG_BEFORE_THROW=0 -DDMLC_ENABLE_STD_THREAD=0 -DDMLC_DISABLE_STDIN=1 -DDMLC_LOG_CUSTOMIZE=1 -DXGBOOST_CUSTOMIZE_LOGGER=1 -DRABIT_CUSTOMIZE_MSG_ -DRABIT_STRICT_CXX98_ -I/usr/local/include -I/usr/local/include/freetype2 -I/opt/X11/include  -fPIC -Wall -mtune=core2 -g -O2 -c rabit/src/engine_empty.cc -o rabit/src/engine_empty.o 
clang++ -std=c++11 -I/Library/Frameworks/R.framework/Resources/include -DNDEBUG -I./include -I./dmlc-core/include -I./rabit/include -I. -DXGBOOST_STRICT_R_MODE=1 -DDMLC_LOG_BEFORE_THROW=0 -DDMLC_ENABLE_STD_THREAD=0 -DDMLC_DISABLE_STDIN=1 -DDMLC_LOG_CUSTOMIZE=1 -DXGBOOST_CUSTOMIZE_LOGGER=1 -DRABIT_CUSTOMIZE_MSG_ -DRABIT_STRICT_CXX98_ -I/usr/local/include -I/usr/local/include/freetype2 -I/opt/X11/include  -fPIC -Wall -mtune=core2 -g -O2 -c rabit/src/c_api.cc -o rabit/src/c_api.o 
clang++ -std=c++11 -dynamiclib -Wl,-headerpad_max_install_names -undefined dynamic_lookup -single_module -multiply_defined suppress -L/Library/Frameworks/R.framework/Resources/lib -L/usr/local/lib -o xgboost.so ./xgboost_R.o ./xgboost_custom.o ./xgboost_assert.o ./amalgamation/xgboost-all0.o ./amalgamation/dmlc-minimum0.o ./rabit/src/engine_empty.o ./rabit/src/c_api.o -F/Library/Frameworks/R.framework/.. -framework R -Wl,-framework -Wl,CoreFoundation 
installing to /Library/Frameworks/R.framework/Versions/3.2/Resources/library/xgboost/libs 
** R 
** data 
** demo 
** preparing package for lazy loading 
** help 
*** installing help indices 
** building package indices 
** installing vignettes 
** testing if installed package can be loaded 
* DONE (xgboost) 

The downloaded source packages are in 
    ‘/private/var/folders/sx/c5z57jp103s493xxcn9bhvwc0000gn/T/RtmpluolUL/downloaded_packages’ 

包不正常下载,因此,当我尝试对数据集运行xgboost提供了以下错误:

Error in xgb.DMatrix(data, label = label, missing = missing) : 
    [14:53:26] amalgamation/../dmlc-core/src/io/local_filesys.cc:61: LocalFileSystem.GetPathInfo 201-225 Error:No such file or directory 
+1

你有没有试过确保你有OpenMP? –

+0

你是否在'xgb.DMatrix()'函数中传入'model.matrix'?看[这篇文章](https://github.com/dmlc/xgboost/issues/1480)。 –

回答

0

尝试关闭,则成为删除您当前的库文件夹,并重新安装这种方式:

if(!require("pacman")) install.packages("pacman") 
pacman::p_load(xgboost) 

pacman,这是精灵卡格几岁的混成词,让你的软件包管理器,而不是管理的尝试手动安装的东西包的安装。这(或多或少)与人们使用应用程序商店或程序gdebi(它在Debian/Ubuntu安装期间为您获取依赖关系)的相同原因越来越多,而不是在从某个镜像下载某些源后从头开始手动构建程序或开发网站。

它可以确保你有所有的依赖,检查版本,检查安装,测试包的加载,具有自动故障排除步骤等

+1

你能解释为什么/这将如何帮助? –

+0

@BenBolker当然,除了仅仅因为它适用于我,它还使用包管理器来管理包安装,而不是尝试手动安装。同样的原因人们越来越多地使用应用程序商店,而不是手动(基本上)构建程序。我必须说,除了保存输入外,“pacman”已经为我节省了一百万次,解决了许多关于SO的软件包安装问题。它确保你拥有所有的依赖关系,检查安装,测试包的加载,自动排除故障步骤等。 –

+0

除了包装'install_packages()'之外,它似乎还没有做太多的工作......但是这是一个有趣的事情。 –

2

this post,你应该“仔细检查,如果你有当你看到这个错误时,为xgb.DMatrix函数提供所有数字类型的特性。为我解决了这个问题。

+0

理想情况下,这可以在正确的错误消息中处理,但在它出现之前,这是导致此错误消息的最可能原因(而不是可怕的C编译问题) – abhiieor