Как я могу перечислить все объекты с определенным префиксом и постфиксом? - PullRequest
0 голосов
/ 27 ноября 2018

У меня есть фрагмент кода, который работает следующим образом:

library(SummarizedExperiment)

for (i in seq_along(sce_list))
 {
     r <- rowData(sce_list[[i]])$use
     c <- colData(sce_list[[i]])$use
     tt=(sce_list[[i]])[r,c]
      assign(paste0("sce_",i,".qc"),tt)
 } 

Я хотел бы сохранить объекты "sce _", i, ". Qc" из приведенного выше кода всписок и доступ к ним через цикл.

В принципе, я хочу сделать:

сделать функцию:

sceDataDim <- function(sce){
        print(paste(metadata(sce)$name[1], dim(sce)[1], "genes", dim(sce)[2], "cells"))

, а затем использовать функцию, подобную этой

sceDataDim(sce_1.qc)

Приведенный выше код работает нормально.Однако, когда я пытаюсь запустить цикл, у меня возникают проблемы:

for (i in 1:4)
sceDataDim(paste0("sce_",i,".qc"))

error
 Error in (function (classes, fdef, mtable)  : 
  unable to find an inherited method for function ‘metadata’ for signature ‘"character"’

Любые предложения ????

РЕДАКТИРОВАТЬ:

dput(sce_list)
list(<S4 object of class structure("SingleCellExperiment", package = "SingleCellExperiment")>, 
    <S4 object of class structure("SingleCellExperiment", package = "SingleCellExperiment")>, 
    <S4 object of class structure("SingleCellExperiment", package = "SingleCellExperiment")>, 
    <S4 object of class structure("SingleCellExperiment", package = "SingleCellExperiment")>)

1 Ответ

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

Вы можете использовать mget с ls и его аргументом pattern:

sce_1.qc <- "foo"
sce_2.qc <- "bar"

your_list <- mget(ls(pattern="sce_\\d+\\.qc"))
your_list
# $sce_1.qc
# [1] "foo"
# 
# $sce_2.qc
# [1] "bar"

\d+ соответствует последовательности цифр

...