【问题标题】:"Error in .Call(): Function not available for .Call() ..." when running third-party package运行第三方包时出现“.Call() 中的错误:.Call() 无法使用的函数 ...”
【发布时间】:2022-06-20 11:30:51
【问题描述】:

我正在尝试在 R 的 4.2.0 版本下运行“rrpack”。但是,缺少 Rcpp 1.0.6 下未提供的功能。所以我将其更新为 Rcpp 1.0.8.3。结果,我遇到了以下错误消息:

Error in .Call("_rrpack_lasso_shooting", PACKAGE = "rrpack", xtx, xty,  : "_rrpack_lasso_shooting" not available for .Call() for package "rrpack"

我发现几个线程描述了这个错误消息,但仅在包开发的上下文中。例如,通常的解决方案是在NAMEFILE 中缺少dynLib(packagename),但roxygen2 生成的文档看起来不错,所以我最终没有任何适用于我的案例的建议。 CRAN 对 rrpack 的检查都“正常”,所以我非常不确定这是否是一个简单的问题,可以从我身边或其他地方解决。

提前致谢!

【问题讨论】:

  • 你的操作系统是什么?你是如何安装rrpack 的?你是否也更新了Rcpp(因为你运行的那个和rrpack 的构建对象之间的不匹配是你本地的错误来源,就像这里的许多早期线程一样)。正如你在 CRAN 看到的那样,通过一致的编译两者都应该工作:cloud.r-project.org/web/checks/check_results_rrpack.html
  • 对不起,我忘了提,我正在使用 Windows 11。我完全卸载了 R + RStudio 并根据this 指南删除了所有软件包。然后我通过 RStudio 控制台重新安装了 rrpack、Rcpp 和所有其他必要的包。但是,错误仍然存​​在,这就是我决定提出这个问题的原因。如果您能指定您提到的“不匹配”,我将不胜感激,因为我还没有完全理解错误@Dirk Eddelbuettel
  • 嗯,这让我很难过。你做了比需要更多的清理工作。这应该像 CRAN 一样有效。

标签: r rcpp


【解决方案1】:

这对你来说可能不太舒服,但我刚刚将rrpack(连同它的依赖项)安装到一个新的 Docker 会话中,一切都很好(见下文)。因此,我们需要您提供更多关于您“如何”做事的信息。

root@10e3fc571ea5:/# R     

R version 4.2.0 (2022-04-22) -- "Vigorous Calisthenics" 
Copyright (C) 2022 The R Foundation for Statistical Computing 
Platform: x86_64-pc-linux-gnu (64-bit)   

R is free software and comes with ABSOLUTELY NO WARRANTY.
You are welcome to redistribute it under certain conditions.
Type 'license()' or 'licence()' for distribution details.

  Natural language support but running in an English locale

R is a collaborative project with many contributors. 
Type 'contributors()' for more information and
'citation()' on how to cite R or R packages in publications.

Type 'demo()' for some demos, 'help()' for on-line help, or
'help.start()' for an HTML browser interface to help.
Type 'q()' to quit R.
> library(rrpack)
> sessionInfo()
R version 4.2.0 (2022-04-22)
Platform: x86_64-pc-linux-gnu (64-bit)
Running under: Ubuntu 22.04 LTS

Matrix products: default
BLAS:   /usr/lib/x86_64-linux-gnu/blas/libblas.so.3.10.0
LAPACK: /usr/lib/x86_64-linux-gnu/lapack/liblapack.so.3.10.0

locale:
 [1] LC_CTYPE=en_US.UTF-8       LC_NUMERIC=C              
 [3] LC_TIME=en_US.UTF-8        LC_COLLATE=en_US.UTF-8    
 [5] LC_MONETARY=en_US.UTF-8    LC_MESSAGES=en_US.UTF-8   
 [7] LC_PAPER=en_US.UTF-8       LC_NAME=C                 
 [9] LC_ADDRESS=C               LC_TELEPHONE=C            
[11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C       

attached base packages:
[1] stats     graphics  grDevices datasets  utils     methods   base     

other attached packages:
[1] rrpack_0.1-12

loaded via a namespace (and not attached):
 [1] Rcpp_1.0.8.3     magrittr_2.0.3   splines_4.2.0    MASS_7.3-57     
 [5] munsell_0.5.0    colorspace_2.0-3 lattice_0.20-45  R6_2.5.1        
 [9] rlang_1.0.2      foreach_1.5.2    fansi_1.0.3      grid_4.2.0      
[13] glmnet_4.1-4     gtable_0.3.0     utf8_1.2.2       cli_3.3.0       
[17] iterators_1.0.14 ellipsis_0.3.2   survival_3.3-1   tibble_3.1.7    
[21] lifecycle_1.0.1  crayon_1.5.1     Matrix_1.4-1     ggplot2_3.3.6   
[25] vctrs_0.4.1      codetools_0.2-18 shape_1.4.6      bspm_0.3.9      
[29] glue_1.6.2       compiler_4.2.0   pillar_1.7.0     scales_1.2.0    
[33] pkgconfig_2.0.3 
> 

【讨论】:

  • 感谢您的宝贵时间和慷慨的帮助!通过繁琐的反复试验,我能够避免错误,但我并不完全满意,因为我仍然不了解问题的根源。具体来说,我在rrpack 中为sofar 函数的control 参数(控制优化的内部计算参数列表)添加了可选输入,这在一定程度上解决了错误。由于输入是可选的(即文档示例不使用它们),我仍然感到困惑但没有错误。
【解决方案2】:

“rrpack”作者刚刚更新了已修复此问题的“rrpack”包。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-08-08
    • 1970-01-01
    • 2012-05-27
    • 1970-01-01
    • 2014-12-17
    • 2020-09-15
    • 1970-01-01
    相关资源
    最近更新 更多