R: Передача одного списка матриц в качестве входных данных для функции, которая требует как минимум 2 входных матриц - PullRequest
0 голосов
/ 22 ноября 2018

Я пытаюсь использовать функцию 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

Есть ли способ достичь этого?

1 Ответ

0 голосов
/ 22 ноября 2018

В R вы используете для этого функцию do.call.Вот пример:

do.call(mnnCorrect, mat_list)

См. Также страницу справки? Do.call.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...