自动在R中放置文件

时间:2018-11-16 11:23:08

标签: r r-markdown

我正在努力使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,并在其中查找文件)< / p>

```{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 :(得分:1)

想象您的数据存储方式如下:

  • 样本(父文件夹)
  • -> / 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(),但是将来您只需要更改父文件夹即可分析另一个数据集。 干杯