Giter Site home page Giter Site logo

jefferis / nabor Goto Github PK

View Code? Open in Web Editor NEW
21.0 3.0 0.0 167 KB

R package wrapping libnabo: fast K Nearest Neighbor search for low dimensions

Home Page: https://github.com/ethz-asl/libnabo

License: Other

R 16.58% TeX 0.38% C++ 82.81% C 0.22%
nearest-neighbors libnabo r r-package

nabor's Introduction

nabor

natverse CRAN_Status_Badge DOI Release Version Build Status Docs Downloads

R package nabor wraps libnabo, a fast K Nearest Neighbour library for low-dimensional spaces implemented in templated C++. In comparison with the widely used ANN library (wrapped by the RANN R package), libnabo is reported to be 5% to 20% faster with more compact data structures.

Quick start

# install (see below for details)
install.packages("nabor")

# use
library(nabor)

# help
?nabor
?knn

# run examples
example(knn)
example(WKNN)

# run tests
library(testthat)
test_package("nabor")

# cite
citation("nabor")

nabor vs RANN

For R users nabor provides a function, knn, that is a drop in replacement for the nn2 function in the RANN R package. I have seen speedups of 2-3x fold for queries of interest (a few thousand points in 3d, k=1) when comparing nabor::knn and RANN::nn2. See ?knn for details.

Furthermore nabor provides a mechanism for reusing the k-d search tree structure for multiple queries. This is achieved by wrapping a libnabo k-d tree and associated points into a C++ class. This in turn is wrapped as an R reference class (by RcppModules) that can be used in R. See ?WKNN for details. The WKNNF class has the additional feature of using floats (4 bytes per coordinate) for the underlying storage, rather than the doubles used by R; this may be useful for large pointsets.

Installation

Released version from CRAN

The current stable version of the package is available from CRAN. The package requires compilation, but installing from CRAN allows mac and windows users without the full C++ compiler toolchain to install binary packages.

install.packages("nabor")

Development version from github

The nabor package is known to compile from source with the standard C(++) compiler toolchains for R under MacOS X, Windows and Linux. See https://www.rstudio.com/products/rpackages/devtools/ for details of the developer toolchains needed for your platform.

Once you have installed the appropriate developer toolchain mentioned above, you can use the devtools package to install the development version of the package:

if (!require("devtools")) install.packages("devtools")
devtools::install_github("jefferis/nabor")

Dependencies

The nabor package includes libnabo and all of its dependencies (boost, via package BH) and Eigen (via package RcppEigen) and does not depend on any non-standard system libraries. It should therefore run out of the box on any mac/linux/windows system.

Acknowlegements

libnabo and therefore the nabor R package are released under the BSD 3 clause license. If you make use of nabor please cite the original authors:

> citation('nabor')

Elseberg J, Magnenat S, Siegwart R and Nüchter A (2012). “Comparison of nearest-neighbor-search
strategies and implementations for efficient shape registration.” _Journal of Software Engineering for
Robotics (JOSER)_, *3*(1), pp. 2-12. ISSN 2035-3928.

A BibTeX entry for LaTeX users is

  @Article{elsebergcomparison,
    title = {Comparison of nearest-neighbor-search strategies and implementations for efficient shape registration},
    author = {J. Elseberg and S. Magnenat and R. Siegwart and A. N{\"u}chter},
    journal = {Journal of Software Engineering for Robotics (JOSER)},
    pages = {2--12},
    volume = {3},
    number = {1},
    year = {2012},
    issn = {2035-3928},
  }

nabor also makes use of the tremendous Rcpp and RcppEigen packages – kudos to their authors!

nabor's People

Contributors

jefferis avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

nabor's Issues

remove register keyword from libnabo

BDR quoth

The C keyword 'register' was deprecated in C++11. Now it has been removed in C++17, clang trunk (to be released as clang 6.0.0 in a couple of months) has started warning on its use by default.
Packages
BayesXsrc DatABEL FCNN4R FNN FRESA.CAD KODAMA Matching NPBayesImpute OjaNP RANN RSNNS RSSL SnakeCharmR TAQMNGR TransferEntropy bipartite cems distances divest dpmixsim logconPH ltsk mixcat mombf msr mvPot nabor nonlinearTseries phreeqc reticulate rstpm2 smoothSurv
invoke this warning. Please remove C++ uses of 'register' at the next update.

Several months have now gone by and R-devel now defaults to C++11 if available. Packages

FCNN4R FNN KODAMA NPBayesImpute OjaNP RANN RSNNS RSSL SnakeCharmR TransferEntropy bipartite distances dpmixsim ltsk mixcat msr nabor nonlinearTseries phreeqc smoothSurv

have not yet been updated to remove 'register'. Please do so before Aug 10 to safely retain the package on CRAN.

(If for some reason you wish to retain 'register' you could declare your code to be C++98: see 'Writing R Extensions'.)

Trouble installing nabor

I'm trying to install nabor on debian linux 10.

> install.packages('nabor')
Installing package into ‘/home/johan/R/x86_64-pc-linux-gnu-library/3.5’
(as ‘lib’ is unspecified)
trying URL 'https://cloud.r-project.org/src/contrib/nabor_0.5.0.tar.gz'

I get errors during the compilation:

g++  -I"/usr/share/R/include" -DNDEBUG -I. -I"/usr/local/lib/R/site-library/Rcpp/include" -I"/usr/lib/R/site-library/RcppEigen/include" -I"/home/johan/R/x86_64-pc-linux-gnu-library/3.5/BH/include"    -fpic  -g -O2 -fdebug-prefix-map=/build/r-base-3.5.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -g  -c RcppExports.cpp -o RcppExports.o
In file included from /usr/lib/R/site-library/RcppEigen/include/Eigen/Core:392,
                 from /usr/lib/R/site-library/RcppEigen/include/Eigen/Dense:1,
                 from /usr/lib/R/site-library/RcppEigen/include/RcppEigenForward.h:30,
                 from /usr/lib/R/site-library/RcppEigen/include/RcppEigen.h:25,
                 from RcppExports.cpp:4:
/usr/lib/R/site-library/RcppEigen/include/Eigen/src/Core/arch/SSE/PacketMath.h:60:39: warning: ignoring attributes on template argument ‘__m128’ {aka ‘__vector(4) float’} [-Wignored-attributes]
 template<> struct is_arithmetic<__m128>  { enum { value = true }; };
                                       ^
/usr/lib/R/site-library/RcppEigen/include/Eigen/src/Core/arch/SSE/PacketMath.h:61:40: warning: ignoring attributes on template argument ‘__m128i’ {aka ‘__vector(2) long long int’} [-Wignored-attributes]
 template<> struct is_arithmetic<__m128i> { enum { value = true }; };
                                        ^
/usr/lib/R/site-library/RcppEigen/include/Eigen/src/Core/arch/SSE/PacketMath.h:62:40: warning: ignoring attributes on template argument ‘__m128d’ {aka ‘__vector(2) double’} [-Wignored-attributes]
 template<> struct is_arithmetic<__m128d> { enum { value = true }; };
                                        ^
/usr/lib/R/site-library/RcppEigen/include/Eigen/src/Core/arch/SSE/PacketMath.h:161:43: warning: ignoring attributes on template argument ‘Eigen::internal::Packet4f’ {aka ‘__vector(4) float’} [-Wignored-attributes]
 template<> struct unpacket_traits<Packet4f> { typedef float  type; enum {size=4, alignment=Aligned16}; typedef Packet4f half; };
                                           ^
In file included from /usr/lib/R/site-library/RcppEigen/include/Eigen/Core:392,
                 from /usr/lib/R/site-library/RcppEigen/include/Eigen/Dense:1,
                 from /usr/lib/R/site-library/RcppEigen/include/RcppEigenForward.h:30,
                 from /usr/lib/R/site-library/RcppEigen/include/RcppEigen.h:25,
                 from RcppExports.cpp:4:
/usr/lib/R/site-library/RcppEigen/include/Eigen/src/Core/arch/SSE/PacketMath.h:162:43: warning: ignoring attributes on template argument ‘Eigen::internal::Packet2d’ {aka ‘__vector(2) double’} [-Wignored-attributes]
 template<> struct unpacket_traits<Packet2d> { typedef double type; enum {size=2, alignment=Aligned16}; typedef Packet2d half; };
                                           ^
/usr/lib/R/site-library/RcppEigen/include/Eigen/src/Core/arch/SSE/PacketMath.h:163:43: warning: ignoring attributes on template argument ‘Eigen::internal::Packet4i’ {aka ‘__vector(2) long long int’} [-Wignored-attributes]
 template<> struct unpacket_traits<Packet4i> { typedef int    type; enum {size=4, alignment=Aligned16}; typedef Packet4i half; };
                                           ^
/usr/lib/R/site-library/RcppEigen/include/Eigen/src/Core/arch/SSE/PacketMath.h:718:35: warning: ignoring attributes on template argument ‘Eigen::internal::Packet4f’ {aka ‘__vector(4) float’} [-Wignored-attributes]
 struct palign_impl<Offset,Packet4f>
                                   ^
/usr/lib/R/site-library/RcppEigen/include/Eigen/src/Core/arch/SSE/PacketMath.h:741:35: warning: ignoring attributes on template argument ‘Eigen::internal::Packet4i’ {aka ‘__vector(2) long long int’} [-Wignored-attributes]
 struct palign_impl<Offset,Packet4i>
                                   ^
/usr/lib/R/site-library/RcppEigen/include/Eigen/src/Core/arch/SSE/PacketMath.h:764:35: warning: ignoring attributes on template argument ‘Eigen::internal::Packet2d’ {aka ‘__vector(2) double’} [-Wignored-attributes]
 struct palign_impl<Offset,Packet2d>
                                   ^
/usr/lib/R/site-library/RcppEigen/include/Eigen/src/Core/arch/SSE/PacketMath.h:778:34: warning: ignoring attributes on template argument ‘Eigen::internal::Packet4f’ {aka ‘__vector(4) float’} [-Wignored-attributes]
 ptranspose(PacketBlock<Packet4f,4>& kernel) {
                                  ^
/usr/lib/R/site-library/RcppEigen/include/Eigen/src/Core/arch/SSE/PacketMath.h:783:34: warning: ignoring attributes on template argument ‘Eigen::internal::Packet2d’ {aka ‘__vector(2) double’} [-Wignored-attributes]
 ptranspose(PacketBlock<Packet2d,2>& kernel) {
                                  ^
/usr/lib/R/site-library/RcppEigen/include/Eigen/src/Core/arch/SSE/PacketMath.h:790:34: warning: ignoring attributes on template argument ‘Eigen::internal::Packet4i’ {aka ‘__vector(2) long long int’} [-Wignored-attributes]
 ptranspose(PacketBlock<Packet4i,4>& kernel) {
                                  ^
In file included from /usr/lib/R/site-library/RcppEigen/include/Eigen/Core:374,
                 from /usr/lib/R/site-library/RcppEigen/include/Eigen/Dense:1,
                 from /usr/lib/R/site-library/RcppEigen/include/RcppEigenForward.h:30,
                 from /usr/lib/R/site-library/RcppEigen/include/RcppEigen.h:25,
                 from RcppExports.cpp:4:
/usr/lib/R/site-library/RcppEigen/include/Eigen/src/Core/arch/Default/ConjHelper.h:15:70: warning: ignoring attributes on template argument ‘Eigen::internal::Packet4f’ {aka ‘__vector(4) float’} [-Wignored-attributes]
   template<> struct conj_helper<PACKET_REAL, PACKET_CPLX, false,false> {                                          \
                                                                      ^
/usr/lib/R/site-library/RcppEigen/include/Eigen/src/Core/arch/SSE/Complex.h:232:1: note: in expansion of macro ‘EIGEN_MAKE_CONJ_HELPER_CPLX_REAL’
 EIGEN_MAKE_CONJ_HELPER_CPLX_REAL(Packet2cf,Packet4f)
 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/lib/R/site-library/RcppEigen/include/Eigen/src/Core/arch/Default/ConjHelper.h:22:70: warning: ignoring attributes on template argument ‘Eigen::internal::Packet4f’ {aka ‘__vector(4) float’} [-Wignored-attributes]
   template<> struct conj_helper<PACKET_CPLX, PACKET_REAL, false,false> {                                          \
                                                                      ^
/usr/lib/R/site-library/RcppEigen/include/Eigen/src/Core/arch/SSE/Complex.h:232:1: note: in expansion of macro ‘EIGEN_MAKE_CONJ_HELPER_CPLX_REAL’
 EIGEN_MAKE_CONJ_HELPER_CPLX_REAL(Packet2cf,Packet4f)
 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/lib/R/site-library/RcppEigen/include/Eigen/src/Core/arch/Default/ConjHelper.h:15:70: warning: ignoring attributes on template argument ‘Eigen::internal::Packet2d’ {aka ‘__vector(2) double’} [-Wignored-attributes]
   template<> struct conj_helper<PACKET_REAL, PACKET_CPLX, false,false> {                                          \
                                                                      ^
/usr/lib/R/site-library/RcppEigen/include/Eigen/src/Core/arch/SSE/Complex.h:417:1: note: in expansion of macro ‘EIGEN_MAKE_CONJ_HELPER_CPLX_REAL’
 EIGEN_MAKE_CONJ_HELPER_CPLX_REAL(Packet1cd,Packet2d)
 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/lib/R/site-library/RcppEigen/include/Eigen/src/Core/arch/Default/ConjHelper.h:22:70: warning: ignoring attributes on template argument ‘Eigen::internal::Packet2d’ {aka ‘__vector(2) double’} [-Wignored-attributes]
   template<> struct conj_helper<PACKET_CPLX, PACKET_REAL, false,false> {                                          \
                                                                      ^
/usr/lib/R/site-library/RcppEigen/include/Eigen/src/Core/arch/SSE/Complex.h:417:1: note: in expansion of macro ‘EIGEN_MAKE_CONJ_HELPER_CPLX_REAL’
 EIGEN_MAKE_CONJ_HELPER_CPLX_REAL(Packet1cd,Packet2d)
 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /usr/lib/R/site-library/RcppEigen/include/Eigen/Core:367,
                 from /usr/lib/R/site-library/RcppEigen/include/Eigen/Dense:1,
                 from /usr/lib/R/site-library/RcppEigen/include/RcppEigenForward.h:30,
                 from /usr/lib/R/site-library/RcppEigen/include/RcppEigen.h:25,
                 from RcppExports.cpp:4:
/usr/lib/R/site-library/RcppEigen/include/Eigen/src/Core/util/XprHelper.h: In instantiation of ‘struct Eigen::internal::find_best_packet<float, 4>’:
/usr/lib/R/site-library/RcppEigen/include/Eigen/src/Core/Matrix.h:22:57:   required from ‘struct Eigen::internal::traits<Eigen::Matrix<float, 4, 1> >’
/usr/lib/R/site-library/RcppEigen/include/Eigen/src/Geometry/Quaternion.h:224:7:   required from ‘struct Eigen::internal::traits<Eigen::Quaternion<float> >’
/usr/lib/R/site-library/RcppEigen/include/Eigen/src/Geometry/arch/Geometry_SSE.h:24:46:   required from here
/usr/lib/R/site-library/RcppEigen/include/Eigen/src/Core/util/XprHelper.h:170:44: warning: ignoring attributes on template argument ‘Eigen::internal::packet_traits<float>::type’ {aka ‘__vector(4) float’} [-Wignored-attributes]
          bool Stop = Size==Dynamic || (Size%unpacket_traits<PacketType>::size)==0 || is_same<PacketType,typename unpacket_traits<PacketType>::half>::value>
                                       ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/lib/R/site-library/RcppEigen/include/Eigen/src/Core/util/XprHelper.h:170:83: warning: ignoring attributes on template argument ‘Eigen::internal::packet_traits<float>::type’ {aka ‘__vector(4) float’} [-Wignored-attributes]
          bool Stop = Size==Dynamic || (Size%unpacket_traits<PacketType>::size)==0 || is_same<PacketType,typename unpacket_traits<PacketType>::half>::value>
                      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/lib/R/site-library/RcppEigen/include/Eigen/src/Core/util/XprHelper.h:170:83: warning: ignoring attributes on template argument ‘Eigen::internal::packet_traits<float>::type’ {aka ‘__vector(4) float’} [-Wignored-attributes]
/usr/lib/R/site-library/RcppEigen/include/Eigen/src/Core/util/XprHelper.h:170:83: warning: ignoring attributes on template argument ‘Eigen::internal::unpacket_traits<__vector(4) float>::half’ {aka ‘__vector(4) float’} [-Wignored-attributes]
/usr/lib/R/site-library/RcppEigen/include/Eigen/src/Core/util/XprHelper.h:188:88: warning: ignoring attributes on template argument ‘Eigen::internal::packet_traits<float>::type’ {aka ‘__vector(4) float’} [-Wignored-attributes]
   typedef typename find_best_packet_helper<Size,typename packet_traits<T>::type>::type type;
                                                                                        ^~~~
In file included from /usr/lib/R/site-library/RcppEigen/include/Eigen/Core:434,
                 from /usr/lib/R/site-library/RcppEigen/include/Eigen/Dense:1,
                 from /usr/lib/R/site-library/RcppEigen/include/RcppEigenForward.h:30,
                 from /usr/lib/R/site-library/RcppEigen/include/RcppEigen.h:25,
                 from RcppExports.cpp:4:
/usr/lib/R/site-library/RcppEigen/include/Eigen/src/Core/DenseCoeffsBase.h: In instantiation of ‘class Eigen::DenseCoeffsBase<Eigen::Matrix<float, 4, 1>, 0>’:
/usr/lib/R/site-library/RcppEigen/include/Eigen/src/Core/DenseCoeffsBase.h:300:7:   required from ‘class Eigen::DenseCoeffsBase<Eigen::Matrix<float, 4, 1>, 1>’
/usr/lib/R/site-library/RcppEigen/include/Eigen/src/Core/DenseCoeffsBase.h:551:7:   required from ‘class Eigen::DenseCoeffsBase<Eigen::Matrix<float, 4, 1>, 3>’
/usr/lib/R/site-library/RcppEigen/include/Eigen/src/Core/DenseBase.h:41:34:   required from ‘class Eigen::DenseBase<Eigen::Matrix<float, 4, 1> >’
/usr/lib/R/site-library/RcppEigen/include/Eigen/src/Core/MatrixBase.h:48:34:   required from ‘class Eigen::MatrixBase<Eigen::Matrix<float, 4, 1> >’
/usr/lib/R/site-library/RcppEigen/include/Eigen/src/Core/PlainObjectBase.h:98:7:   required from ‘class Eigen::PlainObjectBase<Eigen::Matrix<float, 4, 1> >’
/usr/lib/R/site-library/RcppEigen/include/Eigen/src/Core/Matrix.h:178:7:   required from ‘class Eigen::Matrix<float, 4, 1>’
/usr/lib/R/site-library/RcppEigen/include/Eigen/src/Geometry/Quaternion.h:46:50:   required from ‘class Eigen::QuaternionBase<Eigen::Quaternion<float> >’
/usr/lib/R/site-library/RcppEigen/include/Eigen/src/Geometry/Quaternion.h:232:7:   required from ‘class Eigen::Quaternion<float>’
/usr/lib/R/site-library/RcppEigen/include/Eigen/src/Geometry/arch/Geometry_SSE.h:27:3:   required from here
/usr/lib/R/site-library/RcppEigen/include/Eigen/src/Core/DenseCoeffsBase.h:55:30: warning: ignoring attributes on template argument ‘Eigen::internal::packet_traits<float>::type’ {aka ‘__vector(4) float’} [-Wignored-attributes]
                      >::type PacketReturnType;
                              ^~~~~~~~~~~~~~~~
In file included from /usr/lib/R/site-library/RcppEigen/include/Eigen/Core:367,
                 from /usr/lib/R/site-library/RcppEigen/include/Eigen/Dense:1,
                 from /usr/lib/R/site-library/RcppEigen/include/RcppEigenForward.h:30,
                 from /usr/lib/R/site-library/RcppEigen/include/RcppEigen.h:25,
                 from RcppExports.cpp:4:
/usr/lib/R/site-library/RcppEigen/include/Eigen/src/Core/util/XprHelper.h: In instantiation of ‘struct Eigen::internal::find_best_packet<double, 4>’:
/usr/lib/R/site-library/RcppEigen/include/Eigen/src/Core/Matrix.h:22:57:   required from ‘struct Eigen::internal::traits<Eigen::Matrix<double, 4, 1> >’
/usr/lib/R/site-library/RcppEigen/include/Eigen/src/Geometry/Quaternion.h:224:7:   required from ‘struct Eigen::internal::traits<Eigen::Quaternion<double> >’
/usr/lib/R/site-library/RcppEigen/include/Eigen/src/Geometry/arch/Geometry_SSE.h:88:47:   required from here
/usr/lib/R/site-library/RcppEigen/include/Eigen/src/Core/util/XprHelper.h:170:44: warning: ignoring attributes on template argument ‘Eigen::internal::packet_traits<double>::type’ {aka ‘__vector(2) double’} [-Wignored-attributes]
          bool Stop = Size==Dynamic || (Size%unpacket_traits<PacketType>::size)==0 || is_same<PacketType,typename unpacket_traits<PacketType>::half>::value>
                                       ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/lib/R/site-library/RcppEigen/include/Eigen/src/Core/util/XprHelper.h:170:83: warning: ignoring attributes on template argument ‘Eigen::internal::packet_traits<double>::type’ {aka ‘__vector(2) double’} [-Wignored-attributes]
          bool Stop = Size==Dynamic || (Size%unpacket_traits<PacketType>::size)==0 || is_same<PacketType,typename unpacket_traits<PacketType>::half>::value>
                      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/lib/R/site-library/RcppEigen/include/Eigen/src/Core/util/XprHelper.h:170:83: warning: ignoring attributes on template argument ‘Eigen::internal::packet_traits<double>::type’ {aka ‘__vector(2) double’} [-Wignored-attributes]
/usr/lib/R/site-library/RcppEigen/include/Eigen/src/Core/util/XprHelper.h:170:83: warning: ignoring attributes on template argument ‘Eigen::internal::unpacket_traits<__vector(2) double>::half’ {aka ‘__vector(2) double’} [-Wignored-attributes]
/usr/lib/R/site-library/RcppEigen/include/Eigen/src/Core/util/XprHelper.h:188:88: warning: ignoring attributes on template argument ‘Eigen::internal::packet_traits<double>::type’ {aka ‘__vector(2) double’} [-Wignored-attributes]
   typedef typename find_best_packet_helper<Size,typename packet_traits<T>::type>::type type;
                                                                                        ^~~~
In file included from /usr/lib/R/site-library/RcppEigen/include/Eigen/Core:434,
                 from /usr/lib/R/site-library/RcppEigen/include/Eigen/Dense:1,
                 from /usr/lib/R/site-library/RcppEigen/include/RcppEigenForward.h:30,
                 from /usr/lib/R/site-library/RcppEigen/include/RcppEigen.h:25,
                 from RcppExports.cpp:4:
/usr/lib/R/site-library/RcppEigen/include/Eigen/src/Core/DenseCoeffsBase.h: In instantiation of ‘class Eigen::DenseCoeffsBase<Eigen::Matrix<double, 4, 1>, 0>’:
/usr/lib/R/site-library/RcppEigen/include/Eigen/src/Core/DenseCoeffsBase.h:300:7:   required from ‘class Eigen::DenseCoeffsBase<Eigen::Matrix<double, 4, 1>, 1>’
/usr/lib/R/site-library/RcppEigen/include/Eigen/src/Core/DenseCoeffsBase.h:551:7:   required from ‘class Eigen::DenseCoeffsBase<Eigen::Matrix<double, 4, 1>, 3>’
/usr/lib/R/site-library/RcppEigen/include/Eigen/src/Core/DenseBase.h:41:34:   required from ‘class Eigen::DenseBase<Eigen::Matrix<double, 4, 1> >’
/usr/lib/R/site-library/RcppEigen/include/Eigen/src/Core/MatrixBase.h:48:34:   required from ‘class Eigen::MatrixBase<Eigen::Matrix<double, 4, 1> >’
/usr/lib/R/site-library/RcppEigen/include/Eigen/src/Core/PlainObjectBase.h:98:7:   required from ‘class Eigen::PlainObjectBase<Eigen::Matrix<double, 4, 1> >’
/usr/lib/R/site-library/RcppEigen/include/Eigen/src/Core/Matrix.h:178:7:   required from ‘class Eigen::Matrix<double, 4, 1>’
/usr/lib/R/site-library/RcppEigen/include/Eigen/src/Geometry/Quaternion.h:46:50:   required from ‘class Eigen::QuaternionBase<Eigen::Quaternion<double> >’
/usr/lib/R/site-library/RcppEigen/include/Eigen/src/Geometry/Quaternion.h:232:7:   required from ‘class Eigen::Quaternion<double>’
/usr/lib/R/site-library/RcppEigen/include/Eigen/src/Geometry/arch/Geometry_SSE.h:92:3:   required from here
/usr/lib/R/site-library/RcppEigen/include/Eigen/src/Core/DenseCoeffsBase.h:55:30: warning: ignoring attributes on template argument ‘Eigen::internal::packet_traits<double>::type’ {aka ‘__vector(2) double’} [-Wignored-attributes]
                      >::type PacketReturnType;
                              ^~~~~~~~~~~~~~~~
In file included from /usr/lib/R/site-library/RcppEigen/include/Eigen/SparseCore:37,
                 from /usr/lib/R/site-library/RcppEigen/include/Eigen/Sparse:26,
                 from /usr/lib/R/site-library/RcppEigen/include/RcppEigenForward.h:31,
                 from /usr/lib/R/site-library/RcppEigen/include/RcppEigen.h:25,
                 from RcppExports.cpp:4:
/usr/lib/R/site-library/RcppEigen/include/Eigen/src/SparseCore/SparseMatrixBase.h: In instantiation of ‘class Eigen::SparseMatrixBase<Eigen::SparseMatrix<double, 0, int> >’:
/usr/lib/R/site-library/RcppEigen/include/Eigen/src/SparseCore/SparseCompressedBase.h:36:7:   required from ‘class Eigen::SparseCompressedBase<Eigen::SparseMatrix<double, 0, int> >’
/usr/lib/R/site-library/RcppEigen/include/Eigen/src/SparseCore/SparseMatrix.h:96:7:   required from ‘class Eigen::SparseMatrix<double, 0, int>’
/usr/lib/R/site-library/RcppEigen/include/unsupported/Eigen/src/IterativeSolvers/ConstrainedConjGrad.h:61:25:   required from here
/usr/lib/R/site-library/RcppEigen/include/Eigen/src/SparseCore/SparseMatrixBase.h:47:30: warning: ignoring attributes on template argument ‘Eigen::internal::packet_traits<double>::type’ {aka ‘__vector(2) double’} [-Wignored-attributes]
                      >::type PacketReturnType;
                              ^~~~~~~~~~~~~~~~
In file included from /usr/lib/R/site-library/RcppEigen/include/Eigen/Core:367,
                 from /usr/lib/R/site-library/RcppEigen/include/Eigen/Dense:1,
                 from /usr/lib/R/site-library/RcppEigen/include/RcppEigenForward.h:30,
                 from /usr/lib/R/site-library/RcppEigen/include/RcppEigen.h:25,
                 from RcppExports.cpp:4:
/usr/lib/R/site-library/RcppEigen/include/Eigen/src/Core/util/XprHelper.h: In instantiation of ‘struct Eigen::internal::find_best_packet<int, -1>’:
/usr/lib/R/site-library/RcppEigen/include/Eigen/src/Core/Matrix.h:22:57:   required from ‘struct Eigen::internal::traits<Eigen::Matrix<int, -1, 1> >’
/usr/lib/R/site-library/RcppEigen/include/Eigen/src/Core/PlainObjectBase.h:98:7:   required from ‘class Eigen::PlainObjectBase<Eigen::Matrix<int, -1, 1> >’
/usr/lib/R/site-library/RcppEigen/include/Eigen/src/Core/Matrix.h:178:7:   required from ‘class Eigen::Matrix<int, -1, 1>’
/usr/lib/R/site-library/RcppEigen/include/unsupported/Eigen/src/KroneckerProduct/KroneckerTensorProduct.h:168:29:   required from here
/usr/lib/R/site-library/RcppEigen/include/Eigen/src/Core/util/XprHelper.h:170:44: warning: ignoring attributes on template argument ‘Eigen::internal::packet_traits<int>::type’ {aka ‘__vector(2) long long int’} [-Wignored-attributes]
          bool Stop = Size==Dynamic || (Size%unpacket_traits<PacketType>::size)==0 || is_same<PacketType,typename unpacket_traits<PacketType>::half>::value>
                                       ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/lib/R/site-library/RcppEigen/include/Eigen/src/Core/util/XprHelper.h:170:83: warning: ignoring attributes on template argument ‘Eigen::internal::packet_traits<int>::type’ {aka ‘__vector(2) long long int’} [-Wignored-attributes]
          bool Stop = Size==Dynamic || (Size%unpacket_traits<PacketType>::size)==0 || is_same<PacketType,typename unpacket_traits<PacketType>::half>::value>
                      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/lib/R/site-library/RcppEigen/include/Eigen/src/Core/util/XprHelper.h:170:83: warning: ignoring attributes on template argument ‘Eigen::internal::packet_traits<int>::type’ {aka ‘__vector(2) long long int’} [-Wignored-attributes]
/usr/lib/R/site-library/RcppEigen/include/Eigen/src/Core/util/XprHelper.h:170:83: warning: ignoring attributes on template argument ‘Eigen::internal::unpacket_traits<__vector(2) long long int>::half’ {aka ‘__vector(2) long long int’} [-Wignored-attributes]
/usr/lib/R/site-library/RcppEigen/include/Eigen/src/Core/util/XprHelper.h:188:88: warning: ignoring attributes on template argument ‘Eigen::internal::packet_traits<int>::type’ {aka ‘__vector(2) long long int’} [-Wignored-attributes]
   typedef typename find_best_packet_helper<Size,typename packet_traits<T>::type>::type type;
                                                                                        ^~~~
In file included from /usr/lib/R/site-library/RcppEigen/include/Eigen/Core:434,
                 from /usr/lib/R/site-library/RcppEigen/include/Eigen/Dense:1,
                 from /usr/lib/R/site-library/RcppEigen/include/RcppEigenForward.h:30,
                 from /usr/lib/R/site-library/RcppEigen/include/RcppEigen.h:25,
                 from RcppExports.cpp:4:
/usr/lib/R/site-library/RcppEigen/include/Eigen/src/Core/DenseCoeffsBase.h: In instantiation of ‘class Eigen::DenseCoeffsBase<Eigen::Matrix<int, -1, 1>, 0>’:
/usr/lib/R/site-library/RcppEigen/include/Eigen/src/Core/DenseCoeffsBase.h:300:7:   required from ‘class Eigen::DenseCoeffsBase<Eigen::Matrix<int, -1, 1>, 1>’
/usr/lib/R/site-library/RcppEigen/include/Eigen/src/Core/DenseCoeffsBase.h:551:7:   required from ‘class Eigen::DenseCoeffsBase<Eigen::Matrix<int, -1, 1>, 3>’
/usr/lib/R/site-library/RcppEigen/include/Eigen/src/Core/DenseBase.h:41:34:   required from ‘class Eigen::DenseBase<Eigen::Matrix<int, -1, 1> >’
/usr/lib/R/site-library/RcppEigen/include/Eigen/src/Core/MatrixBase.h:48:34:   required from ‘class Eigen::MatrixBase<Eigen::Matrix<int, -1, 1> >’
/usr/lib/R/site-library/RcppEigen/include/Eigen/src/Core/PlainObjectBase.h:98:7:   required from ‘class Eigen::PlainObjectBase<Eigen::Matrix<int, -1, 1> >’
/usr/lib/R/site-library/RcppEigen/include/Eigen/src/Core/Matrix.h:178:7:   required from ‘class Eigen::Matrix<int, -1, 1>’
/usr/lib/R/site-library/RcppEigen/include/unsupported/Eigen/src/KroneckerProduct/KroneckerTensorProduct.h:168:29:   required from here
/usr/lib/R/site-library/RcppEigen/include/Eigen/src/Core/DenseCoeffsBase.h:55:30: warning: ignoring attributes on template argument ‘Eigen::internal::packet_traits<int>::type’ {aka ‘__vector(2) long long int’} [-Wignored-attributes]
                      >::type PacketReturnType;
                              ^~~~~~~~~~~~~~~~
/usr/lib/R/site-library/RcppEigen/include/Eigen/src/Core/DenseCoeffsBase.h: In instantiation of ‘class Eigen::DenseCoeffsBase<Eigen::Transpose<Eigen::Matrix<int, -1, 1> >, 0>’:
/usr/lib/R/site-library/RcppEigen/include/Eigen/src/Core/DenseCoeffsBase.h:300:7:   required from ‘class Eigen::DenseCoeffsBase<Eigen::Transpose<Eigen::Matrix<int, -1, 1> >, 1>’
/usr/lib/R/site-library/RcppEigen/include/Eigen/src/Core/DenseCoeffsBase.h:551:7:   required from ‘class Eigen::DenseCoeffsBase<Eigen::Transpose<Eigen::Matrix<int, -1, 1> >, 3>’
/usr/lib/R/site-library/RcppEigen/include/Eigen/src/Core/DenseBase.h:41:34:   required from ‘class Eigen::DenseBase<Eigen::Transpose<Eigen::Matrix<int, -1, 1> > >’
/usr/lib/R/site-library/RcppEigen/include/Eigen/src/Core/MatrixBase.h:48:34:   required from ‘class Eigen::MatrixBase<Eigen::Transpose<Eigen::Matrix<int, -1, 1> > >’
/usr/lib/R/site-library/RcppEigen/include/Eigen/src/Core/Transpose.h:115:37:   required from ‘class Eigen::TransposeImpl<Eigen::Matrix<int, -1, 1>, Eigen::Dense>’
/usr/lib/R/site-library/RcppEigen/include/Eigen/src/Core/Transpose.h:52:37:   required from ‘class Eigen::Transpose<Eigen::Matrix<int, -1, 1> >’
/usr/lib/R/site-library/RcppEigen/include/unsupported/Eigen/src/KroneckerProduct/KroneckerTensorProduct.h:178:72:   required from here
/usr/lib/R/site-library/RcppEigen/include/Eigen/src/Core/DenseCoeffsBase.h:55:30: warning: ignoring attributes on template argument ‘Eigen::internal::packet_traits<int>::type’ {aka ‘__vector(2) long long int’} [-Wignored-attributes]
/usr/lib/R/site-library/RcppEigen/include/Eigen/src/Core/DenseCoeffsBase.h: In instantiation of ‘class Eigen::DenseCoeffsBase<Eigen::Matrix<int, -1, -1>, 0>’:
/usr/lib/R/site-library/RcppEigen/include/Eigen/src/Core/DenseCoeffsBase.h:300:7:   required from ‘class Eigen::DenseCoeffsBase<Eigen::Matrix<int, -1, -1>, 1>’
/usr/lib/R/site-library/RcppEigen/include/Eigen/src/Core/DenseCoeffsBase.h:551:7:   required from ‘class Eigen::DenseCoeffsBase<Eigen::Matrix<int, -1, -1>, 3>’
/usr/lib/R/site-library/RcppEigen/include/Eigen/src/Core/DenseBase.h:41:34:   required from ‘class Eigen::DenseBase<Eigen::Matrix<int, -1, -1> >’
/usr/lib/R/site-library/RcppEigen/include/Eigen/src/Core/MatrixBase.h:48:34:   required from ‘class Eigen::MatrixBase<Eigen::Matrix<int, -1, -1> >’
/usr/lib/R/site-library/RcppEigen/include/Eigen/src/Core/PlainObjectBase.h:98:7:   required from ‘class Eigen::PlainObjectBase<Eigen::Matrix<int, -1, -1> >’
/usr/lib/R/site-library/RcppEigen/include/Eigen/src/Core/Matrix.h:178:7:   required from ‘class Eigen::Matrix<int, -1, -1>’
/usr/lib/R/site-library/RcppEigen/include/unsupported/Eigen/src/KroneckerProduct/KroneckerTensorProduct.h:179:36:   required from here
/usr/lib/R/site-library/RcppEigen/include/Eigen/src/Core/DenseCoeffsBase.h:55:30: warning: ignoring attributes on template argument ‘Eigen::internal::packet_traits<int>::type’ {aka ‘__vector(2) long long int’} [-Wignored-attributes]
In file included from /usr/local/lib/R/site-library/Rcpp/include/Rcpp.h:77,
                 from /usr/lib/R/site-library/RcppEigen/include/RcppEigen.h:26,
                 from RcppExports.cpp:4:
/usr/local/lib/R/site-library/Rcpp/include/Rcpp/Rmath.h: In function ‘double R::pythag(double, double)’:
/usr/local/lib/R/site-library/Rcpp/include/Rcpp/Rmath.h:222:57: error: ‘::Rf_pythag’ has not been declared
     inline double pythag(double a, double b) { return ::Rf_pythag(a, b); }
                                                         ^~~~~~~~~
/usr/local/lib/R/site-library/Rcpp/include/Rcpp/Rmath.h:222:57: note: suggested alternative: ‘pythag’
     inline double pythag(double a, double b) { return ::Rf_pythag(a, b); }
                                                         ^~~~~~~~~
                                                         pythag
In file included from /usr/lib/R/site-library/RcppEigen/include/Eigen/Core:367,
                 from /usr/lib/R/site-library/RcppEigen/include/Eigen/Dense:1,
                 from /usr/lib/R/site-library/RcppEigen/include/RcppEigenForward.h:30,
                 from /usr/lib/R/site-library/RcppEigen/include/RcppEigen.h:25,
                 from RcppExports.cpp:4:
/usr/lib/R/site-library/RcppEigen/include/Eigen/src/Core/util/XprHelper.h: In instantiation of ‘struct Eigen::internal::find_best_packet<double, -1>’:
/usr/lib/R/site-library/RcppEigen/include/Eigen/src/Core/Matrix.h:22:57:   required from ‘struct Eigen::internal::traits<Eigen::Matrix<double, -1, -1> >’
/usr/lib/R/site-library/RcppEigen/include/Eigen/src/Core/Map.h:18:8:   required from ‘struct Eigen::internal::traits<Eigen::Map<Eigen::Matrix<double, -1, -1> > >’
/usr/lib/R/site-library/RcppEigen/include/Eigen/src/Core/util/ForwardDeclarations.h:32:54:   required from ‘struct Eigen::internal::accessors_level<Eigen::Map<Eigen::Matrix<double, -1, -1> > >’
/usr/lib/R/site-library/RcppEigen/include/Eigen/src/Core/util/ForwardDeclarations.h:113:75:   required from ‘class Eigen::Map<Eigen::Matrix<double, -1, -1> >’
/usr/local/lib/R/site-library/Rcpp/include/Rcpp/InputParameter.h:64:11:   required from ‘class Rcpp::ConstInputParameter<Eigen::Map<Eigen::Matrix<double, -1, -1> > >’
RcppExports.cpp:16:91:   required from here
/usr/lib/R/site-library/RcppEigen/include/Eigen/src/Core/util/XprHelper.h:170:44: warning: ignoring attributes on template argument ‘Eigen::internal::packet_traits<double>::type’ {aka ‘__vector(2) double’} [-Wignored-attributes]
          bool Stop = Size==Dynamic || (Size%unpacket_traits<PacketType>::size)==0 || is_same<PacketType,typename unpacket_traits<PacketType>::half>::value>
                                       ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/lib/R/site-library/RcppEigen/include/Eigen/src/Core/util/XprHelper.h:170:83: warning: ignoring attributes on template argument ‘Eigen::internal::packet_traits<double>::type’ {aka ‘__vector(2) double’} [-Wignored-attributes]
          bool Stop = Size==Dynamic || (Size%unpacket_traits<PacketType>::size)==0 || is_same<PacketType,typename unpacket_traits<PacketType>::half>::value>
                      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/lib/R/site-library/RcppEigen/include/Eigen/src/Core/util/XprHelper.h:170:83: warning: ignoring attributes on template argument ‘Eigen::internal::packet_traits<double>::type’ {aka ‘__vector(2) double’} [-Wignored-attributes]
/usr/lib/R/site-library/RcppEigen/include/Eigen/src/Core/util/XprHelper.h:170:83: warning: ignoring attributes on template argument ‘Eigen::internal::unpacket_traits<__vector(2) double>::half’ {aka ‘__vector(2) double’} [-Wignored-attributes]
/usr/lib/R/site-library/RcppEigen/include/Eigen/src/Core/util/XprHelper.h:188:88: warning: ignoring attributes on template argument ‘Eigen::internal::packet_traits<double>::type’ {aka ‘__vector(2) double’} [-Wignored-attributes]
   typedef typename find_best_packet_helper<Size,typename packet_traits<T>::type>::type type;
                                                                                        ^~~~
In file included from /usr/lib/R/site-library/RcppEigen/include/Eigen/Core:434,
                 from /usr/lib/R/site-library/RcppEigen/include/Eigen/Dense:1,
                 from /usr/lib/R/site-library/RcppEigen/include/RcppEigenForward.h:30,
                 from /usr/lib/R/site-library/RcppEigen/include/RcppEigen.h:25,
                 from RcppExports.cpp:4:
/usr/lib/R/site-library/RcppEigen/include/Eigen/src/Core/DenseCoeffsBase.h: In instantiation of ‘class Eigen::DenseCoeffsBase<Eigen::Matrix<double, -1, -1>, 0>’:
/usr/lib/R/site-library/RcppEigen/include/Eigen/src/Core/DenseCoeffsBase.h:300:7:   required from ‘class Eigen::DenseCoeffsBase<Eigen::Matrix<double, -1, -1>, 1>’
/usr/lib/R/site-library/RcppEigen/include/Eigen/src/Core/DenseCoeffsBase.h:551:7:   required from ‘class Eigen::DenseCoeffsBase<Eigen::Matrix<double, -1, -1>, 3>’
/usr/lib/R/site-library/RcppEigen/include/Eigen/src/Core/DenseBase.h:41:34:   required from ‘class Eigen::DenseBase<Eigen::Matrix<double, -1, -1> >’
/usr/lib/R/site-library/RcppEigen/include/Eigen/src/Core/MatrixBase.h:48:34:   required from ‘class Eigen::MatrixBase<Eigen::Matrix<double, -1, -1> >’
/usr/lib/R/site-library/RcppEigen/include/Eigen/src/Core/PlainObjectBase.h:98:7:   required from ‘class Eigen::PlainObjectBase<Eigen::Matrix<double, -1, -1> >’
/usr/lib/R/site-library/RcppEigen/include/Eigen/src/Core/Matrix.h:178:7:   required from ‘class Eigen::Matrix<double, -1, -1>’
/usr/lib/R/site-library/RcppEigen/include/Eigen/src/Core/Map.h:24:30:   required from ‘struct Eigen::internal::traits<Eigen::Map<Eigen::Matrix<double, -1, -1> > >’
/usr/lib/R/site-library/RcppEigen/include/Eigen/src/Core/util/ForwardDeclarations.h:32:54:   required from ‘struct Eigen::internal::accessors_level<Eigen::Map<Eigen::Matrix<double, -1, -1> > >’
/usr/lib/R/site-library/RcppEigen/include/Eigen/src/Core/util/ForwardDeclarations.h:113:75:   required from ‘class Eigen::Map<Eigen::Matrix<double, -1, -1> >’
/usr/local/lib/R/site-library/Rcpp/include/Rcpp/InputParameter.h:64:11:   required from ‘class Rcpp::ConstInputParameter<Eigen::Map<Eigen::Matrix<double, -1, -1> > >’
RcppExports.cpp:16:91:   required from here
/usr/lib/R/site-library/RcppEigen/include/Eigen/src/Core/DenseCoeffsBase.h:55:30: warning: ignoring attributes on template argument ‘Eigen::internal::packet_traits<double>::type’ {aka ‘__vector(2) double’} [-Wignored-attributes]
                      >::type PacketReturnType;
                              ^~~~~~~~~~~~~~~~
/usr/lib/R/site-library/RcppEigen/include/Eigen/src/Core/DenseCoeffsBase.h: In instantiation of ‘class Eigen::DenseCoeffsBase<Eigen::Map<Eigen::Matrix<double, -1, -1> >, 0>’:
/usr/lib/R/site-library/RcppEigen/include/Eigen/src/Core/DenseCoeffsBase.h:300:7:   required from ‘class Eigen::DenseCoeffsBase<Eigen::Map<Eigen::Matrix<double, -1, -1> >, 1>’
/usr/lib/R/site-library/RcppEigen/include/Eigen/src/Core/DenseCoeffsBase.h:551:7:   required from ‘class Eigen::DenseCoeffsBase<Eigen::Map<Eigen::Matrix<double, -1, -1> >, 3>’
/usr/lib/R/site-library/RcppEigen/include/Eigen/src/Core/DenseBase.h:41:34:   required from ‘class Eigen::DenseBase<Eigen::Map<Eigen::Matrix<double, -1, -1> > >’
/usr/lib/R/site-library/RcppEigen/include/Eigen/src/Core/MatrixBase.h:48:34:   required from ‘class Eigen::MatrixBase<Eigen::Map<Eigen::Matrix<double, -1, -1> > >’
/usr/lib/R/site-library/RcppEigen/include/Eigen/src/Core/MapBase.h:37:34:   required from ‘class Eigen::MapBase<Eigen::Map<Eigen::Matrix<double, -1, -1> >, 0>’
/usr/lib/R/site-library/RcppEigen/include/Eigen/src/Core/MapBase.h:215:34:   required from ‘class Eigen::MapBase<Eigen::Map<Eigen::Matrix<double, -1, -1> >, 1>’
/usr/lib/R/site-library/RcppEigen/include/Eigen/src/Core/Map.h:94:79:   required from ‘class Eigen::Map<Eigen::Matrix<double, -1, -1> >’
/usr/local/lib/R/site-library/Rcpp/include/Rcpp/InputParameter.h:64:11:   required from ‘class Rcpp::ConstInputParameter<Eigen::Map<Eigen::Matrix<double, -1, -1> > >’
RcppExports.cpp:16:91:   required from here
/usr/lib/R/site-library/RcppEigen/include/Eigen/src/Core/DenseCoeffsBase.h:55:30: warning: ignoring attributes on template argument ‘Eigen::internal::packet_traits<double>::type’ {aka ‘__vector(2) double’} [-Wignored-attributes]
make: *** [/usr/lib/R/etc/Makeconf:171: RcppExports.o] Error 1
ERROR: compilation failed for package ‘nabor’
* removing ‘/home/johan/R/x86_64-pc-linux-gnu-library/3.5/nabor’

CRAN version Install fails on Ubuntu 16.04

Not sure why - error message pasted below.
Dev version works though 👍 great work.

> install.packages("nabor")
Installing package into ‘/home/robin/R/x86_64-pc-linux-gnu-library/3.3’
(as ‘lib’ is unspecified)
trying URL 'https://cran.rstudio.com/src/contrib/nabor_0.4.6.tar.gz'
Content type 'application/x-gzip' length 38592 bytes (37 KB)
==================================================
downloaded 37 KB

* installing *source* package ‘nabor’ ...
** package ‘nabor’ successfully unpacked and MD5 sums checked
** libs
g++ -I/usr/share/R/include -DNDEBUG -I.  -I"/home/robin/R/x86_64-pc-linux-gnu-library/3.3/Rcpp/include" -I"/home/robin/R/x86_64-pc-linux-gnu-library/3.3/RcppEigen/include" -I"/home/robin/R/x86_64-pc-linux-gnu-library/3.3/BH/include"   -fpic  -g -O2 -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -g  -c RcppExports.cpp -o RcppExports.o
g++ -I/usr/share/R/include -DNDEBUG -I.  -I"/home/robin/R/x86_64-pc-linux-gnu-library/3.3/Rcpp/include" -I"/home/robin/R/x86_64-pc-linux-gnu-library/3.3/RcppEigen/include" -I"/home/robin/R/x86_64-pc-linux-gnu-library/3.3/BH/include"   -fpic  -g -O2 -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -g  -c WKNN.cpp -o WKNN.o
g++ -I/usr/share/R/include -DNDEBUG -I.  -I"/home/robin/R/x86_64-pc-linux-gnu-library/3.3/Rcpp/include" -I"/home/robin/R/x86_64-pc-linux-gnu-library/3.3/RcppEigen/include" -I"/home/robin/R/x86_64-pc-linux-gnu-library/3.3/BH/include"   -fpic  -g -O2 -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -g  -c brute_force_cpu.cpp -o brute_force_cpu.o
g++ -I/usr/share/R/include -DNDEBUG -I.  -I"/home/robin/R/x86_64-pc-linux-gnu-library/3.3/Rcpp/include" -I"/home/robin/R/x86_64-pc-linux-gnu-library/3.3/RcppEigen/include" -I"/home/robin/R/x86_64-pc-linux-gnu-library/3.3/BH/include"   -fpic  -g -O2 -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -g  -c kdtree_cpu.cpp -o kdtree_cpu.o
g++ -I/usr/share/R/include -DNDEBUG -I.  -I"/home/robin/R/x86_64-pc-linux-gnu-library/3.3/Rcpp/include" -I"/home/robin/R/x86_64-pc-linux-gnu-library/3.3/RcppEigen/include" -I"/home/robin/R/x86_64-pc-linux-gnu-library/3.3/BH/include"   -fpic  -g -O2 -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -g  -c nabo.cpp -o nabo.o
g++ -I/usr/share/R/include -DNDEBUG -I.  -I"/home/robin/R/x86_64-pc-linux-gnu-library/3.3/Rcpp/include" -I"/home/robin/R/x86_64-pc-linux-gnu-library/3.3/RcppEigen/include" -I"/home/robin/R/x86_64-pc-linux-gnu-library/3.3/BH/include"   -fpic  -g -O2 -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -g  -c nabor.cpp -o nabor.o
g++ -shared -L/usr/lib/R/lib -Wl,-Bsymbolic-functions -Wl,-z,relro -o nabor.so RcppExports.o WKNN.o brute_force_cpu.o kdtree_cpu.o nabo.o nabor.o -L/usr/lib/R/lib -lR
installing to /home/robin/R/x86_64-pc-linux-gnu-library/3.3/nabor/libs
** R
** data
** inst
** preparing package for lazy loading
** help
*** installing help indices
** building package indices
** testing if installed package can be loaded

 *** caught segfault ***
address 0x20, cause 'memory not mapped'

Traceback:
 1: .Call(Module__classes_info, xp)
 2: Module(module, mustStart = TRUE, where = env)
 3: doTryCatch(return(expr), name, parentenv, handler)
 4: tryCatchOne(expr, names, parentenv, handlers[[1L]])
 5: tryCatchList(expr, classes, parentenv, handlers)
 6: tryCatch(Module(module, mustStart = TRUE, where = env), error = function(e) e)
 7: loadModule(module, NULL, env = where, loadNow = TRUE)
 8: Rcpp::loadRcppClass(Class = "WKNNF", where = NS)
 9: (function (NS) Rcpp::loadRcppClass(Class = "WKNNF", where = NS))(<environment>)
10: doTryCatch(return(expr), name, parentenv, handler)
11: tryCatchOne(expr, names, parentenv, handlers[[1L]])
12: tryCatchList(expr, classes, parentenv, handlers)
13: tryCatch((function (NS) Rcpp::loadRcppClass(Class = "WKNNF", where = NS))(<environment>),     error = function(e) e)
14: eval(expr, envir, enclos)
15: eval(substitute(tryCatch(FUN(WHERE), error = function(e) e),     list(FUN = f, WHERE = where)), where)
16: .doLoadActions(where, attach)
17: methods::cacheMetaData(ns, TRUE, ns)
18: loadNamespace(package, lib.loc)
19: doTryCatch(return(expr), name, parentenv, handler)
20: tryCatchOne(expr, names, parentenv, handlers[[1L]])
21: tryCatchList(expr, classes, parentenv, handlers)
22: tryCatch(expr, error = function(e) {    call <- conditionCall(e)    if (!is.null(call)) {        if (identical(call[[1L]], quote(doTryCatch)))             call <- sys.call(-4L)        dcall <- deparse(call)[1L]        prefix <- paste("Error in", dcall, ": ")        LONG <- 75L        msg <- conditionMessage(e)        sm <- strsplit(msg, "\n")[[1L]]        w <- 14L + nchar(dcall, type = "w") + nchar(sm[1L], type = "w")        if (is.na(w))             w <- 14L + nchar(dcall, type = "b") + nchar(sm[1L],                 type = "b")        if (w > LONG)             prefix <- paste0(prefix, "\n  ")    }    else prefix <- "Error : "    msg <- paste0(prefix, conditionMessage(e), "\n")    .Internal(seterrmessage(msg[1L]))    if (!silent && identical(getOption("show.error.messages"),         TRUE)) {        cat(msg, file = stderr())        .Internal(printDeferredWarnings())    }    invisible(structure(msg, class = "try-error", condition = e))})
23: try({    attr(package, "LibPath") <- which.lib.loc    ns <- loadNamespace(package, lib.loc)    env <- attachNamespace(ns, pos = pos, deps)})
24: library(pkg_name, lib.loc = lib, character.only = TRUE, logical.return = TRUE)
25: withCallingHandlers(expr, packageStartupMessage = function(c) invokeRestart("muffleMessage"))
26: suppressPackageStartupMessages(library(pkg_name, lib.loc = lib,     character.only = TRUE, logical.return = TRUE))
27: doTryCatch(return(expr), name, parentenv, handler)
28: tryCatchOne(expr, names, parentenv, handlers[[1L]])
29: tryCatchList(expr, classes, parentenv, handlers)
30: tryCatch(expr, error = function(e) {    call <- conditionCall(e)    if (!is.null(call)) {        if (identical(call[[1L]], quote(doTryCatch)))             call <- sys.call(-4L)        dcall <- deparse(call)[1L]        prefix <- paste("Error in", dcall, ": ")        LONG <- 75L        msg <- conditionMessage(e)        sm <- strsplit(msg, "\n")[[1L]]        w <- 14L + nchar(dcall, type = "w") + nchar(sm[1L], type = "w")        if (is.na(w))             w <- 14L + nchar(dcall, type = "b") + nchar(sm[1L],                 type = "b")        if (w > LONG)             prefix <- paste0(prefix, "\n  ")    }    else prefix <- "Error : "    msg <- paste0(prefix, conditionMessage(e), "\n")    .Internal(seterrmessage(msg[1L]))    if (!silent && identical(getOption("show.error.messages"),         TRUE)) {        cat(msg, file = stderr())        .Internal(printDeferredWarnings())    }    invisible(structure(msg, class = "try-error", condition = e))})
31: try(suppressPackageStartupMessages(library(pkg_name, lib.loc = lib,     character.only = TRUE, logical.return = TRUE)))
32: tools:::.test_load_package("nabor", "/home/robin/R/x86_64-pc-linux-gnu-library/3.3")
An irrecoverable exception occurred. R is aborting now ...
Segmentation fault (core dumped)

ask for your help about your "nabor" package

Hi. your r package nabor is really helpful. But recently I encountered a problem. After I construct the big kd-tree for the whole dataset, how to extract a small kd-tree (for a sub-dataset of the whole dataset) from the original big kd-tree? in other words, how to deletes some nodes from the big kd-tree? (this could accelerate the searching process, since the deleted nodes are the ones that I am 100% sure to be not the k nearest samples,) Many Thank for your help! Best wishes.

Improper handling of NA/NaN values by knn

The knn function outputs seemingly OK results even if the query or data matrices contain NA or NaN values. The results are invalid of course (can't compute distances to missing coordinates), but no warning or error is returned by the function. This is problematic, particularly because the documentation for knn does not seem to include any hints on how missing values are treated.

Cheers, and many thanks for this wonderful package,

Cornel

Example:

packageDescription("nabor")["Version"]
$Version
[1] "0.4.4"
targets <- matrix(c(1,2,3,1,2,3,1,2,3), nrow=3, ncol=3)
query <- matrix(c(NA,2,3,1,2,3,1,NaN,3), nrow=3, ncol=3)
query
[,1] [,2] [,3]
[1,] NA 1 1
[2,] 2 2 NaN
[3,] 3 3 3
targets[knn(targets, query, k=1)$nn.idx,]
[,1] [,2] [,3]
[1,] 1 1 1
[2,] 1 1 1
[3,] 3 3 3
query[knn(query, targets, k=1)$nn.idx,]
[,1] [,2] [,3]
[1,] 3 3 3
[2,] 3 3 3
[3,] 3 3 3

loading of package fails

I cannot load the package:

R> library('nabor')
Error in .doLoadActions(where, attach) : 
  error in load action .__A__.1 for package nabor: loadModule(module, NULL, env = where, loadNow = TRUE): Unable to load module "class_WKNNF": cannot allocate vector of size 1043074.4 Gb
Error: package or namespace load failed for ‘nabor’

Reinstallation does not help. Any ideas?

No radius search

"For R users nabor provides a function, knn, that is a drop in replacement for the nn2 function in the RANN R package"

Not quite - RANN::nn2 also has a radius search function that limits the nearest neighbour search up to a radius, and I don't see this in nabor.

It would be useful to have a function that finds all neighbours within a distance radius (rather than a fixed K number of neighbours), returning this in a ragged list rather than matrix data structures...

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.