起因
- 运行以下
RunHarmony()
时报错,可是代码以前能跑的,唯一的不同就是换了服务器
seuratObj <- RunHarmony(sce, "orig.ident")
Error in harmonyObj$cluster_cpp() :
element-wise pow(): incompatible matrix dimensions: 100x6 and 6x1
处理过程
方案一 ❎:重装
- 该问题比较新,根据Github解决方案 [1],首先运行以下代码重装harmony:
devtools::install_github("eddelbuettel/harmony",force = TRUE)
devtools::install_github("immunogenomics/harmony",force = TRUE)
方案二 ❎:Live Support
- 官方在上述issue中提出与官方联系 [2]
- 我联系了,但是问题提交的时候一直处于
Submitting…
方案三 ✅:Rcpp版本问题
- 从一开始的解决方案里,有人提出是
Rcpp
包的版本问题 [3]
- 于是查看
Rcpp
包的版本 [4]
packageVersion('Rcpp')
[1] ‘1.0.9’
- 嗯,有可能是版本问题……
- 安装旧版本的Rcpp
- 因为我查看自己电脑上的R版本是1.0.7,所以安装了一样的以防万一
devtools::install_version("Rcpp", version = "1.0.7", repos = "[http://cran.us.r-project.org](http://cran.us.r-project.org/)")
- 再一次查看版本还是
1.0.9
- 推测可能是已经加载过
devtools
包的缘故
- 因为在把所有R包全部卸载的情况下,首先安装
devtools
,然后查看Rcpp
包版本显示1.0.9
- 此时无法加载刚安装的
Rcpp
包
Package ‘Rcpp’ version 1.0.9 cannot be unloaded ……
- 清除环境加载的R包重启Rstudio或上边栏
Session-Restart R
,此时所有R包都会unload
library("Rcpp")
packageVersion('Rcpp')
[1] ‘1.0.7’
- 此方法适用于没安装多少包的
- 如果安装了,应该可以通过unload所有包,然后重新加载实现。有些依赖高版本的Rcpp的R包,可能需要重新下载
补充
查看R包版本方法
packageVersion('Seurat')
sessionInfo('Seurat')