2013-09-21 6 views
6

Ich versuche, eine generische rmarkdown Vorlage zu erstellen, die eine Analyse auf einem Datenrahmen durchführen wird. Ich würde gerne in der Lage sein, einen Datenrahmen in eine Rmarkdown-Datei zu übergeben, anstatt es jedes Mal hart zu kodieren.Wie kann ich Variablen in eine R-Markdown-.Rmd-Datei übergeben?

Unten ist ein Ausschnitt, mit dem ich experimentiert habe. Sie können sehen, dass ich oben den Datenrahmen (mtcars) laden muss. Ich identifiziere auch manuell die unabhängigen Variablen (ivs) und abhängigen Variablen (dvs). Ich möchte diese als Parameter übergeben. Ich versuche eine schnelle und schmutzige Version der SPSS Explore-Funktionalität zu erstellen. „Explore.Rmd“:

```{r} 
library(ggplot2) 
data(mtcars) 
mtcars$am <- factor(mtcars$am, levels=c(0,1), labels=c("Manual", "Automatic")) 
df <- mtcars 
ivs <- c("cyl", "disp", "hp", "drat", "wt", "am", "qsec") 
dvs <- c("mpg", "qsec") 
``` 

Histograms 
------------------------------------- 

```{r} 
for (v in union(ivs, dvs)) 
{ 
    hist <- ggplot(df, aes_string(x=v)) + geom_histogram() 
    print(hist) 
} 
``` 

Ich mag Code haben, die etwa wie folgt aussehen ähnlich den HTML-Code mit knitr oder etwas zu erzeugen.

myDF <- read.delim("mydata.tab") 
ivs <- c("iv1", "iv2", "iv3") 
dvs <- c("dv1", "dv2", "dv3") 
magic("Explore.Rmd", myDF, ivs, dvs) # <- how do I do this part? 

Also, ist es möglich, eine statische Rmarkdown-Datei zu haben und Parameter an sie zu übergeben? Oder würde es einen anderen Weg geben, um das zu erreichen, was ich versuche?

+2

einen Blick auf 'knit_expand haben()' – baptiste

+0

wo Können wir die 'strick_expand' Funktion finden? sprichst du darüber: http://cran.r-project.org/web/packages/knitr/vignettes/knit_expand.html? –

Antwort

4

Ich denke, Sie können von knitr Paket verwenden, um die "Magie" zu tun.

  1. Sie definieren Ihre Abschlags-Datei wie folgt und speichern Sie es als mydoc.Rmd

    ```{r} 
    source('test.R') 
    ``` 
    ```{r} 
    library(ggplot2) 
    for (v in union(ivs, dvs)) 
    { 
        hist <- ggplot(myDF, aes_string(x=v)) + geom_histogram() 
    print(hist) 
    } 
    
  2. In test.r Sie Ihre Daten vor:

    myDF <- read.delim("mydata.tab") 
    ivs <- c("iv1", "iv2", "iv3") 
    dvs <- c("dv1", "dv2", "dv3") 
    
  3. Sie kompilieren knitr mit

    Knit2html('mydoc.Rmd') 
    
+1

Umm .. also wo werden die Daten übergeben? Wenn ein Benutzer 'Knit2html ('meindoc.Rmd')' ausführt, sollte nicht "mydata.tab" in diesem Aufruf übergeben werden? – rmf

1

denke ich, eine Alternative zu https://github.com/yihui/knitr/issues/567

gegeben Sie diese Argumente im Voraus erstellen müssen, z.B.

args='2013' 
knit('../my.Rmd','test.html') 

dann knit() erkennt args innerhalb my.Rmd; das envir Argument sehen, wenn Sie die Details

7

Eine weitere Option verstehen wollen, ist Ihre Variablen params in der rmarkdown::render Funktion zur Liste finden Sie unter: http://rmarkdown.rstudio.com/developer_parameterized_reports.html.

rmarkdown::render("MyDocument.Rmd", params = list(df = myDF)) 

dann die Parameter in der yaml nennen:

--- 
title: My Document 
output: html_document 
params: 
    df: myDF 
--- 

, die dann in dem Bericht Körper zugeordnet werden können:

```{r} 
myDF <- params$df 
``` 
Verwandte Themen