Я думаю, основываясь на быстром ударе, что ваш пакет потерян.
Шаг установки завершается неудачно на
** testing if installed package can be loaded from temporary location
Error: package or namespace load failed for ‘imputeMulti’ in dyn.load(file, DLLpath = DLLpath, ...):
unable to load shared object '/usr/local/lib/R/site-library/00LOCK-imputeMulti/00new/imputeMulti/libs/imputeMulti.so':
/usr/local/lib/R/site-library/00LOCK-imputeMulti/00new/imputeMulti/libs/imputeMulti.so: undefined symbol: imputeMulti_supDistC
Error: loading failed
Execution halted
ERROR: loading failed
* removing ‘/usr/local/lib/R/site-library/imputeMulti’
Warning message:
In install.packages(pkgs = f, lib = lib, repos = if (isMatchingFile(f)) NULL else repos) :
installation of package ‘imputeMulti_0.7.1.tar.gz’ had non-zero exit status
edd@rob:/tmp/imputeMulti(master)$
Т.е. мы пропустили символ imputeMulti_supDistC
, который вы называете, и вы делаете это неправильно. С R cpp и его (удивительным) compileAttributes()
вы делаете , а не вызываете .Call()
, как вы это сделали здесь. Вы называете провайдер R.
Вы дважды совершили эту ошибку, и это исправило ее:
edd@rob:/tmp/imputeMulti(master)$ git diff R/int-count_levels.R
diff --git a/R/int-count_levels.R b/R/int-count_levels.R
index a4ce4cc..9e749cc 100755
--- a/R/int-count_levels.R
+++ b/R/int-count_levels.R
@@ -4,7 +4,8 @@
# wrapper to supDistC to move error checking outside of C++
supDist <- function(x,y) {
if (length(x) != length(y)) stop("Length of x and y differ.")
- .Call('imputeMulti_supDistC', PACKAGE = 'imputeMulti', x, y)
+ #.Call('imputeMulti_supDistC', PACKAGE = 'imputeMulti', x, y)
+ supDistC(x, y)
}
# convert a factor-vector to an integer vector, where the integers correspond
@@ -91,7 +92,8 @@ mx_my_compare <- function(mat_x, mat_y) {
mat_y <- do.call("cbind", lapply(mat_y, fact_to_int))
## 1. Run code in C
- .Call('imputeMulti_xy_compare', PACKAGE = 'imputeMulti', mat_x, mat_y)
+ #.Call('imputeMulti_xy_compare', PACKAGE = 'imputeMulti', mat_x, mat_y)
+ xy_compare(mat_x, mat_y)
# mat_to_mat_compare(mat_x, mat_y, na.rm= TRUE)
}
edd@rob:/tmp/imputeMulti(master)$
Сделайте эти упрощения, запустите compileAttributes()
, чтобы обновить два файла RcppExports
, и будьте счастливы.