R: Как индексировать объекты R внутри цикла for (Seurat) - PullRequest
0 голосов
/ 15 ноября 2018

Я пытаюсь использовать цикл for для упрощения следующего кода:

a1 <- CreateSeuratObject (raw.data = a1.data)
a2 <- CreateSeuratObject (raw.data = a2.data)
a3 <- ...

Я пробовал следующее:

samples <- c("a1", "a2", "a3")
samples.data <- c("a1.data", "a2.data", "a3.data")
for (i in samples) {
  for (j in samples.data) {
    i <- CreateSeuratObject(raw.data = j)    
  }
}

Но возвращается следующая ошибка:

Error in base::colSums(x, na.rm = na.rm, dims = dims, ...) : 
 'x' must be an array of at least two dimensions

Функция CreateSeuratObject по существу пытается прочитать вектор samples.data вместо индексации соответствующего элемента в векторе. Как я могу это исправить?

1 Ответ

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

Вот три способа сделать то, что вы хотите.Я предлагаю вам не использовать первый способ.

samples <- c("a1", "a2", "a3")
samples.data <- c("a1.data", "a2.data", "a3.data")

for (i in seq_along(samples)) {
    assign(samples[i], CreateSeuratObject(raw.data = samples.data[i]))
}

samples_list <- vector("list", length = length(samples))
for (i in seq_along(samples)) {
  samples_list[[i]] <- CreateSeuratObject(raw.data = samples.data[i]))
}
names(samples_list) <- samples

samples_list2 <- lapply(samples.data, CreateSeuratObject)
names(samples_list2) <- samples
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...