【问题标题】:wrapper around my .Rmd file to take input path and name of output file包装我的 .Rmd 文件以获取输入路径和输出文件的名称
【发布时间】:2018-12-02 20:02:30
【问题描述】:

我在 Rmarkdown 中编写了几百行代码。我希望这个脚本通过包装器从用户那里获取输出文件的输入路径和名称。我对这种编码很陌生,我的问题是我怎样才能有一个包装器来接受这两个输入并将其解析为我的 .Rmd 文件。

例如,这里是我的 .Rmd 文件的前几行。

---
title: "QC Report"
author: "Angelo"
output: 
  html_document:
  css: style.css
  toc: true
  fontsize: 15pt
---

  For the current QC report we first refer to the 10x QC reports for initial sequence and mapping quality metrics.


#1. Loading of libraries 


```{r include = T}
suppressPackageStartupMessages(library(scater))
suppressPackageStartupMessages(library(mvoutlier))
suppressPackageStartupMessages(library(Rtsne))
suppressPackageStartupMessages(library(limma))
suppressPackageStartupMessages(library(ggplot2))
suppressPackageStartupMessages(library(repr))
suppressPackageStartupMessages(library(cowplot))
suppressPackageStartupMessages(library(knitr))
suppressPackageStartupMessages(library(rmarkdown))
options(stringsAsFactors = FALSE)
```


#2. Loading expression data

\newline



```{r include = T}

  loadSCE <- function(path){
  sce <- read10XResults(path)
  #sce <- normalize(sce) # Data normalization based on scran

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

  isSpike(sce, "MT") <- rownames(sce) %in% mitochondrialGenes

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

```



```{r include = T}

paths <- list.dirs(path = "/home/mydir/SampleData/", recursive = FALSE)


for (i in 1:length(paths))
  assign(paste0("sce_",i), loadSCE(paths[i]))


sce=0
for (i in 1:length(paths))
 sce[i]<-print(noquote(paste0("sce_",i)))

```

```{r include = T}
    t_list <- mget(ls(pattern="sce_\\d+"))
     for(i in seq_along(t_list))
 {
 metadata(t_list[[i]])["name"] <- paste0("iMates-",i)
}
```

本质上我想要的是这样的:

wrapper.sh -path /home/mydir/  -outfile output.html

or 

Raw.Rmd -p /home/mydir/  -outfile output.html

请帮帮我。

谢谢

【问题讨论】:

    标签: r bash sh


    【解决方案1】:

    您可以使用 R 脚本执行这些操作,使用 Rscript script.R /home/mydir/ output.html 之类的东西运行(或在某些操作系统上,使用如下所示的 hash-bang 脚本)。

    文件script.R 应该包含从命令行获取参数并将它们传递给rmarkdown::render 的代码。这样就可以了:

    #! /path/to/Rscript --vanilla --default-packages=utils,rmarkdown
    args <- commandArgs(TRUE)
    path <- args[1]
    outfile <- args[2]
    
    render("doc.Rmd", output_file = outfile, params = list(path = path))
    

    这使doc.Rmd 固定为文档的名称。它需要声明path 是一个参数;将此添加到您的 YAML 标头中:

    params: 
      path: "."
    

    如果不指定路径,则字符串"." 是默认值。

    要从参数中检索路径,可以使用这样的代码块:

    ```{r}
    path <- params$path
    ```
    

    然后就像代码块中的任何其他变量一样使用path

    【讨论】:

    • 嗨,我应该在这行代码中添加什么:paths
    • 您问如何将/home/mydir 放入文档中;我给你看了。如果您遵循我的建议,它将最终出现在变量 path 中。你用它做什么取决于你。
    猜你喜欢
    • 2021-11-25
    • 2019-05-01
    • 2011-12-22
    • 2017-07-27
    • 1970-01-01
    • 1970-01-01
    • 2013-03-31
    • 1970-01-01
    • 2013-12-20
    相关资源
    最近更新 更多