在使用R中的lmer函数时,initializePtr()函数出现错误:包'Matrix'中没有提供'cholmod_factor_ldetA'函数。

7
我正在尝试使用R中的lmer函数构建一个混合效应线性回归模型。我正在使用以下代码构建固定效应和混合效应模型,通过比较AIC来证明使用混合效应模型的合理性。我已经尝试多次重新加载lme4包并在上传之间重新启动(如其他问题中建议的),但这并没有解决错误。非常感谢您提前的任何指导。
    `# generate models
    m0.glm <- glm(SPL ~ 1, family = Gamma, data = CP)
    m0.lmer = lmer(SPL ~ 1 + (1|Lunar), REML = T, data = CP)

    `# compare models
    AIC(logLik(m0.glm))
    AIC(logLik(m0.lmer))

    > m0.glm <- glm(SPL ~ 1, family = Gamma, data = CP)
    > m0.lmer = lmer(SPL ~ 1 + (1|Lunar), REML = T, data = CP)

    Error in initializePtr() : 
      function 'cholmod_factor_ldetA' not provided by package 'Matrix'`

2
你可能会受到Matrix软件包最近的更改的影响,请参阅r-package-devel邮件列表的存档,网址为https://stat.ethz.ch/pipermail/r-package-devel/2023q4/010051.html(以及下一条消息)。重新安装`lme4`可能就足够了。(此外,这与`rcpp`无关。) - undefined
1
感谢您的反馈,重新安装lme4并没有解决这个错误。 - undefined
1
欢迎来到StackOverflow,虽然有点晚了。你需要给我们更多的细节:你使用的是什么操作系统?你是通过二进制文件还是源代码安装的软件包?请查看我提到的消息:为了使其生效,你必须从源代码重新安装Matrix的依赖项。如果你安装的是二进制文件,实际上只是在“复制”错误。可悲的是,计算机也擅长这样做。 - undefined
1
非常感谢您提供的额外解释,从源代码重新安装解决了错误。 - undefined
很高兴听到这个好消息,对给您带来的不便表示抱歉! - undefined
1
对于那些想知道如何从源代码重新安装lme4的人,你可以运行以下命令:install.packages("lme4", type = "source") - undefined
1个回答

4

Matrix < 1.6-2 和 Matrix >= 1.6-2 是二进制不兼容的。当你在它们之间切换时,你必须重新安装那些链接到 Matrix 并且依赖于 Matrix ABI 的软件包,需要从源代码重新安装。

> tools::package_dependencies("Matrix", which = "LinkingTo", reverse = TRUE)[[1L]]
 [1] "ahMLE"               "bayesWatch"          "cplm"               
 [4] "GeneralizedWendland" "hibayes"             "irlba"              
 [7] "lme4"                "mcmcsae"             "OpenMx"             
[10] "PRIMME"              "robustlmm"           "spGARCH"            
[13] "TMB"                 "bcSeq"              

如果你有所需的工具[1],那么你可以从源代码重新安装lme4。
install.packages("lme4", type = "source")

如果没有的话,您需要从存储库安装与Matrix和lme4兼容的二进制文件。并非所有存储库都提供兼容的二进制文件,但CRAN提供[2],所以在大多数情况下以下操作应该有效:
oo <- options(repos = "https://cran.r-project.org/")
install.packages("Matrix")
install.packages("lme4")
options(oo)

请注意,一旦lme4 > 1.1-35.1发布,所有存储库中的二进制文件将自动重新构建。此时,只需简单地调用update.packages()即可使一切恢复正常,甚至无需显式设置repos
另请参阅我在11月11日的R-package-devel邮件列表上的公告:https://stat.ethz.ch/pipermail/r-package-devel/2023q4/010054.html
  1. Windows用户应按照这里的说明安装RTools;macOS用户应按照这里的说明安装Xcode和GNU Fortran命令行工具;Linux用户应已经拥有所需的工具。

  2. 适用于Windows(R 4.2、4.3、4.4)、macOS x86_64(R 4.3)和macOS arm64(R 4.2、4.3)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接