2013-09-21 23 views
6

Veri çerçevesi üzerinde analiz yapacak genel bir rmarkdown şablonu oluşturmaya çalışıyorum. Her zaman sabit kodlamak yerine bir veri çerçevesine bir rmarkdown dosyasına geçebilmek istiyorum. Aşağıda Değişkenleri bir R işaretleme .Rmd dosyasına nasıl geçirebilirim?

Ben deneme oldum snippet'idir. En üstte veri çerçevesini (mtcars) yüklemek zorunda olduğumu görebilirsiniz. Ayrıca bağımsız değişkenleri (ivs) ve bağımlı değişkenleri (dvs) elle özdeşleştiriyorum. Bunları parametre olarak aktarmak istiyorum. SPSS Explore işlevselliğinin hızlı ve kirli bir sürümünü yapmaya çalışıyorum. "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) 
} 
``` 

Ben knitr veya benzeri kullanılarak HTML üretmek için şuna benzer bir kod olsun isterim.

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? 

Yani, bir statik rmarkdown dosyası olması ve parametrelerini ona geçirmesi mümkün mü? Ya da yapmaya çalıştığım şeyi başarmanın başka bir yolu var mı?

+2

knit_expand 'de bakabilirsiniz()' – baptiste

+0

nerede knit_expand' işlevini bulabilir miyiz? bundan bahsediyorsunuz: http://cran.r-project.org/web/packages/knitr/vignettes/knit_expand.html? –

cevap

4

"Sihirli" yapmak için knitr paketinden knit2html paketini kullanabilirsiniz.

  1. Böyle senin markdown dosyasını tanımlamak ve test.r yılında 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. Verilerinizi hazırlamak olarak kaydedin:

    myDF <- read.delim("mydata.tab") 
    ivs <- c("iv1", "iv2", "iv3") 
    dvs <- c("dv1", "dv2", "dv3") 
    
  3. Sen knitr kullanarak derlemek

    Knit2html('mydoc.Rmd') 
    
+1

Umm .. öyleyse veriler nerede geçiyor? Bir kullanıcı "Knit2html ('mydoc.Rmd')' çalıştırdığında, "mydata.tab" bu çağrıya geçmemeli mi? – rmf

1

Sana önceden mesela bu argümanları oluşturmak zorunda olacak alternatif https://github.com/yihui/knitr/issues/567

verilen düşünüyorum Eğer Başka bir seçenek rmarkdown::render fonksiyonunda params kullanarak değişkenleri listelemektir ayrıntıları

7

anlamak istiyorsanız my.Rmd;

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

sonra knit() tanıyacağı args envir argüman bakın bakın: http://rmarkdown.rstudio.com/developer_parameterized_reports.html.

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

Sonra YAML parametreleri diyoruz: o zamana kadar rapor vücutta atanabilir

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

:

```{r} 
myDF <- params$df 
``` 
İlgili konular