r - R:将单个矩阵列表作为输入传递给需要至少 2 个输入矩阵的函数
问题描述
我正在尝试使用 R mnnCorrect函数(来自 scran 包)。它需要至少 2 个输入矩阵才能工作。
# install package
source("https://bioconductor.org/biocLite.R"); biocLite("scran")
# example matrix 1
B1 <- matrix(rnorm(10000), ncol=50)
# example matrix 2
B2 <- matrix(rnorm(10000), ncol=50)
# function below works fine
out <- mnnCorrect(B1, B2)
但是,我正在尝试将这些矩阵作为列表提供(更方便使用可变数量的矩阵自动处理过程):
mat_list=list()
mat_list[["Mat1"]]=B1
mat_list[["Mat2"]]=B2
str(mat_list)
List of 2
$ Mat1: num [1:200, 1:50] 1.107 -0.828 1.559 -1.353 0.667 ...
$ Mat2: num [1:200, 1:50] -0.231 0.894 0.369 1.606 -1.346 ...
# This works fine
out <- mnnCorrect(mat_list$Mat1, mat_list$Mat2)
# These do not work
out <- mnnCorrect(mat_list)
Error in mnnCorrect(mat_list) : at least two batches must be specified
out <- mnnCorrect(cat(paste(gsub("^","mat_list$",names(mat_list)),collapse=", "))
Error in mnnCorrect(mat_list) : at least two batches must be specified
out <- mnnCorrect(capture.output(cat(paste(gsub("^","mat_list$",names(mat_list)),collapse=", ")))
Error in mnnCorrect(mat_list) : at least two batches must be specified
library(dplyr)
cat(paste(gsub("^","mat_list$",names(mat_list)),collapse=", ") %>% mnnCorrect(.)
mat_list$Mat1, mat_list$Mat2Error in mnnCorrect(.) : at least two batches must be specified
有没有办法做到这一点?
解决方案
在 R 中,您为此使用函数 do.call。这是一个例子:
do.call(mnnCorrect, mat_list)
另请参阅帮助页面 ?do.call 。
推荐阅读
- javascript - 无法正确将 curl/fetch 转移到 python
- r - 如何使用 R 中的 Synth() 包遍历预测变量列表
- r - 如何在使用 R 访问 ODBC 时使用变量?
- asp.net-core - Cloudampq 中的 MassTransit 高内存使用率
- apache-kafka - 自定义 Kafka 连接器:连接器出错但任务仍在运行
- c# - 在保存文件之前从 SaveFileDialog 获取文件夹路径
- node.js - 通过 Express 将 Filestream 发送到客户端以进行下载
- python - pkg_resources.DistributionNotFound:未找到“pip==19.0.3”分发,应用程序需要该分发
- node.js - 现在在 NEST JS 中启用验证器 DTO
- java - 无法获取 win32-x86-64/xpde.dll 的 InputStream