автоматизация расположения файлов в R - PullRequest
0 голосов
/ 16 ноября 2018

Я пытаюсь разобраться с кодом R и автоматизировать его, чтобы мне не приходилось каждый раз указывать местоположение файла, а только местоположение родительской папки.В родительской папке будет n дочерних папок, в которых хранятся нужные файлы.

В настоящее время я вручную задаю расположение всех дочерних папок.

Код выглядит следующим образом:

First a function:

```{r include = T}

        loadSC <- function(path){
        sc <- read10XResults(path)


        Genes <- as.character(rowData(sc)[startsWith(rowData(sc)$symbol, "mt-"),]$id)

        isSpike(sc, "MT") <- rownames(sc) %in% Genes

        sc <- calculateQCMetrics(sc, 
                                  feature_controls = list(
                                    MT =  isSpike(sc, "MT")
        ))
    }

``` 

, указывающий на файлы (Это хочу, где я хочу, чтобы он автоматически определял количество дочерних папок. Здесь у нас 5 дочернихпапки K1, K2, K3, K4, K5 и ищите файлы внутри них)

```{r include = T}
        sc_1 = loadSC("Sample/K1/outs/matrices/mm10/")
        sc_2 = loadSC("Sample/K2/outs/matrices/mm10/")
        sc_3 = loadSC("Sample/K3/outs/matrices/mm10/")
        sc_4 = loadSC("Sample/K4/outs/matrices/mm10/")
        sc_5 = loadSC("Sample/K5/outs/matrices/mm10/")

    ```

Кроме того, у меня есть аналогичный кусок ниже этого, который также должен быть зациклен.

```{r include = T}
    metadata(sc_1)["name"] <- "iM-1"
    metadata(sc_2)["name"] <- "iM-2"
    metadata(sc_3)["name"] <- "iM-3"
    metadata(sc_4)["name"] <- "iM-4"
    metadata(sc_5)["name"] <- "iM-5"
```

Я делаю это в Rmarkdown.

Небольшое руководство или рабочий пример действительно помогут.

Заранее спасибо

1 Ответ

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

Представьте, что ваши данные хранятся как:

  • Образец (родительская папка)
  • -> / K1 (подпапка)
  • -> / K2
  • -> / K3
  • ...

Простой способ доступа к данным:

# This function gets all the folder paths inside "Sample" 
paths <- list.dirs(path = "Sample", recursive = FALSE)
# To access the data, you should get used to lapply()
data <- lapply(paths, loadSC)
# To keep an overview where the data is from
names(data) <- paths

В результате выполучить полный список имен с нужными вам данными.Возможно, вам придется адаптировать свой loadSC (), но в будущем вам нужно всего лишь изменить родительскую папку, чтобы проанализировать другой набор данных.Приветствия

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