備忘ログ

チラシの裏的備忘録&メモ

Rのlme4パッケージで"関数 'chm_factor_ldetL2' はパッケージ 'Matrix' では提供されていません"とエラーが出た

1ヶ月ぶりくらいにlme4パッケージをつかって(一般化)線形混合モデルを計算しようと思ったら関数 'chm_factor_ldetL2' はパッケージ 'Matrix' では提供されていませんとエラーが出たので解決させたときの対応をメモしておく。

英語だと、Error in initializePtr() : function 'cholmod_factor_ldetL2' not provided by package 'Matrix'というメッセージになる。

library(lme4)
## 要求されたパッケージ Matrix をロード中です
library(lattice)
gm1 <- glmer(cbind(incidence, size - incidence) ~ period + (1 | herd), data = cbpp, family = binomial)
## initializePtr() でエラー: 
##  関数 'chm_factor_ldetL2' はパッケージ 'Matrix' では提供されていません 

少し前に実行したときには特に問題なく実行できていたのに、なんじゃらほい、と思った。glmer()だけでなくlmer()でも同じエラーが出た。

だいたいこういうエラーは誰かが同じように踏んでいるのでエラーメッセージ検索をかけると、英語のメッセージで検索するとすぐに

github.com

github.com

微妙にエラーメッセージが異なるが似た内容のエラー現象にいきあたる。

要するに「お前の使ってるMatrixパッケージが古いんじゃね?」的な話の様子。

いや、定期的に、RStudoのTools > Check for package update実行してますけど、と思ったけど言われた通り、

install.packages("Matrix")
install.packages("lme4")

とインストールし直してみたら解決した。

11月ころに出始めた症状のようで、たしかにここ1ヶ月位lme4パッケージ使ってなかったな、と思った。

追記

RStudioをRoot権限のない一般ユーザーとして起動してTools > Check for package updateでパッケージをアップデートしてもSystem Libraryのパッケージはアップデートの対象にならないだけでなく、アップデートの有無すら確認されないことがわかった。

indenkun.hatenablog.com

たぶんこの問題を踏んでいる人の多くはRStudioを一般ユーザーで起動しTools > Check for package updateをつかってパッケージのアップデートをしているのだと思う。