Error: ! Failed to collect lazy table. Caused by error in `db_collect()` - 在 R 中使用 biomaRt 包

回答 2 浏览 1930 2023-10-26

我目前正在使用 R 开发一个生物信息学项目,在尝试使用 biomaRt 包时遇到错误。安装该包并将其加载到 R 中后,我尝试选择一个 biomaRt 数据库用于我的分析。

这是我收到错误时运行的代码:

library(biomaRt)
ensembl <- useEnsembl(biomart = "ensembl", dataset = "hsapiens_gene_ensembl")

错误信息:

Error in `collect()`:
! Failed to collect lazy table.
Caused by error in `db_collect()`:
! Arguments in `...` must be used.
✖ Problematic argument:
• ..1 = Inf
ℹ Did you misspell an argument name?

Backtrace:
     ▆
  1. ├─biomaRt::useEnsembl(biomart = "genes", dataset = "hsapiens_gene_ensembl")
  2. │ └─biomaRt:::.getEnsemblSSL()
  3. │   └─BiocFileCache::BiocFileCache(cache, ask = FALSE)
  4. │     └─BiocFileCache:::.sql_create_db(bfc)
  5. │       └─BiocFileCache:::.sql_validate_version(bfc)
  6. │         └─BiocFileCache:::.sql_schema_version(bfc)
  7. │           ├─base::tryCatch(...)
  8. │           │ └─base (local) tryCatchList(expr, classes, parentenv, handlers)
  9. │           └─tbl(src, "metadata") %>% collect(Inf)
 10. ├─dplyr::collect(., Inf)
 11. └─dbplyr:::collect.tbl_sql(., Inf)
 12.   ├─base::tryCatch(...)
 13.   │ └─base (local) tryCatchList(expr, classes, parentenv, handlers)
 14.   │   └─base (local) tryCatchOne(expr, names, parentenv, handlers[[1L]])
 15.   │     └─base (local) doTryCatch(return(expr), name, parentenv, handler)
 16.   └─dbplyr::db_collect(x$src$con, sql, n = n, warn_incomplete = warn_incomplete, ...)`

R Version: 4.3.1 (2023-06-16 ucrt)
BiomaRt Version: 2.58.0
Operating System: Windows

我尝试更新所有软件包(biomaRtdbplyr)并重新启动 R,但没有任何帮助。

我将非常感谢有关如何解决此错误的任何指导或见解。预先感谢您的帮助!

Chrystin L. 提问于2023-10-26
2 个回答
#1楼 已采纳
得票数 7

这可能是由于dbplyr升级造成的,BiocFileCache中已经有合并PR来解决这个

不知何故,tbl(src, "metadata") %>% collect(Inf) 中的Inf 参数进入了dbplyr::db_collect <- function(con, sql, n = -1, warn_incomplete = TRUE, ...)... 而不是n 参数。

BiocFileCache 2.10.1 正在等待在 Bioconductor 服务器上构建时,降级 dbplyr 为我解决了这个问题 (devtools::install_version("dbplyr", version = "2.3.4"))

我想从他们的 Github 存储库安装最新的 BiocFileCache 也可以。

Qing 提问于2023-10-27
Qing 修改于2023-10-27
#2楼
得票数 1

Qing 的回答对我有用。 我在 Irun 时遇到了这个问题

celldex::HumanPrimaryCellAtlasData()

注意:您需要退出 R 或 Rstudio,然后重新打开它并更新 dplyr

install.packages("devtools")
devtools::install_version("dbplyr", version = "2.3.4")

然后检查devtools的版本,确保版本是2.3.4 然后重新打开R或R studio,重做编写感兴趣的代码。

StupidR 提问于2023-10-27
StupidR 修改于2023-10-27