emmeans R package error:“Error in t(OO[[rr]]):object 'unpackedMatrix_transpose' not found”

f4t66c6m  于 12个月前  发布在  其他
关注(0)|答案(2)|浏览(93)

我尝试在RStudio中使用emmeans包,我已经成功地做了很多次,但现在它给了我一个我无法解决的错误:
shannon_site_emm <- emmeans(shannon_site,factor(site))
t(OOrr)中的错误:未找到对象'unpackedMatrix_transpose'
具体地说,我正在重新运行一个以前使用过的脚本和一个更新的数据集,所以我知道emmeans包以前在这个项目中工作过,对我的数据集的更新的性质不够引人注目,它们应该是这里的问题。

以前有没有人遇到过这个错误,知道如何修复它?

我做了什么:

#fit a model:
shannon_site <- lmer(Shannon ~ site + (1|bird_name), data = alpha_metadata)

# inspected parameters:
summary(shannon_site)

Linear mixed model fit by REML. t-tests use Satterthwaite's method ['lmerModLmerTest']
Formula: Shannon ~ site + (1 | bird_name)
   Data: alpha_metadata

REML criterion at convergence: 889.7

Scaled residuals: 
    Min      1Q  Median      3Q     Max 
-2.4094 -0.6484  0.0143  0.5922  2.6900 

Random effects:
 Groups    Name        Variance Std.Dev.
 bird_name (Intercept) 0.1652   0.4065  
 Residual              1.2518   1.1188  
Number of obs: 281, groups:  bird_name, 142

**Fixed effects:
                  Estimate Std. Error       df t value Pr(>|t|)    
(Intercept)         3.4142     0.8894 150.4461   3.839 0.000182 ***
siteFt Lauderdale  -1.3439     1.0893 150.4461  -1.234 0.219234    
siteJDSP            0.3794     0.9889 162.3981   0.384 0.701773    
siteSFWC           -1.3423     0.9080 152.7540  -1.478 0.141394    
siteTTP            -0.4431     0.8937 150.0042  -0.496 0.620771    
---**
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Correlation of Fixed Effects:
            (Intr) stFtLd stJDSP stSFWC
siteFtLdrdl -0.816                     
siteJDSP    -0.899  0.734              
siteSFWC    -0.980  0.800  0.881       
siteTTP     -0.995  0.813  0.895  0.975
efzxgjgh

efzxgjgh1#

您的问题或多或少与this GitHub问题重复。您的R进程加载的包命名空间缓存了一个泛型函数base::t的方法,该方法来自与您安装的Matrix版本不同的版本。缓存的方法“陈旧”,因为它在安装的Matrix版本下无法正常工作,在这种情况下,因为安装的Matrix版本没有定义符号unpackedMatrix_transpose
解决方法是 * 从源代码 * 重新安装其命名空间缓存陈旧方法的包。更新后的缓存将与当前安装的Matrix版本完全兼容。
罪魁祸首包很可能是seq,因此:

install.packages("phyloseq", type = "source")

为什么我怀疑他是个混蛋?对于loadedNamespaces()中的每个包p,在asNamespace(p)中查找一个名为.__T__t:base的符号。如果它存在,则它是一个环境缓存base::t的方法。对于每个这样的方法f,测试environment(f)是否是Matrix命名空间。如果是,然后打包p缓存方法,用于Matrix导出的base::t,因此 * 理想情况下 *,每当更新(或降级)Matrix时,您都可以从源代码重新安装它。

hasCachedMethods <- function(packages, generic, generic.from, methods.from) {
    ans <- logical(length(packages))
    names(ans) <- packages
    .__T__ <- paste0(".__T__", generic, ":", generic.from)
    ns.from <- asNamespace(methods.from)
    for (i in seq_along(packages)) {
        e <- asNamespace(packages[i])[[.__T__]]
        if (!is.environment(e))
            next
        for (s in names(e)) {
            if (identical(environment(e[[s]]), ns.from)) {
                ans[i] <- TRUE
                break
            }
        }
    }
    ans
}
> loadedNamespaces()
[1] "compiler"  "graphics"  "utils"     "grDevices" "stats"     "datasets" 
[7] "methods"   "base"
> loadNamespace("phyloseq")
<environment: namespace:phyloseq>
> (packages <- loadedNamespaces())
 [1] "methods"          "generics"         "utf8"             "graphics"        
 [5] "bitops"           "stringi"          "lattice"          "digest"          
 [9] "magrittr"         "grid"             "grDevices"        "iterators"       
[13] "foreach"          "plyr"             "jsonlite"         "Matrix"          
[17] "ape"              "GenomeInfoDb"     "survival"         "mgcv"            
[21] "fansi"            "scales"           "permute"          "Biostrings"      
[25] "codetools"        "ade4"             "cli"              "rlang"           
[29] "crayon"           "XVector"          "Biobase"          "splines"         
[33] "munsell"          "utils"            "vegan"            "stats"           
[37] "tools"            "base"             "parallel"         "reshape2"        
[41] "phyloseq"         "dplyr"            "colorspace"       "Rhdf5lib"        
[45] "ggplot2"          "GenomeInfoDbData" "multtest"         "BiocGenerics"    
[49] "vctrs"            "R6"               "stats4"           "lifecycle"       
[53] "rhdf5"            "zlibbioc"         "stringr"          "biomformat"      
[57] "S4Vectors"        "IRanges"          "MASS"             "cluster"         
[61] "pkgconfig"        "pillar"           "gtable"           "glue"            
[65] "data.table"       "Rcpp"             "tidyselect"       "tibble"          
[69] "rhdf5filters"     "datasets"         "igraph"           "nlme"            
[73] "compiler"         "RCurl"           
> h <- hasCachedMethods(packages, "t", "base", "Matrix")
> h[h]
  Matrix phyloseq 
    TRUE     TRUE

这种分析对每个用户来说都是太高的期望。理想情况下,Matrix的作者应该设计一种机制来系统地检测缓存失效,然后在更新之前以某种方式发布这些信息。(它正在发生,慢慢地......)更理想的是,我们将研究在加载时将方法修补到缓存类和方法的效果。这将完全防止缓存失效,但我们(主要是我)根本没有找到时间。

j2qf4p5b

j2qf4p5b2#

我以前在an issue report中见过这个问题。这不是emmeans中的问题。它可能是R版本和Matrix包支持之间的转换中的一些故障。我认为如果您重新安装一些包(也许是Matrix?)并重新启动R,问题就会消失。抱歉我不能更具体,但我确实有用户报告成功。

相关问题