2017-03-20 8 views
1

私はforループを使用してabout about RMarkdownについて質問があります。Rマークダウンhtml_document for loop

私の生データ(QQ.csv):

type,com,year,month,value 
A,CH,2016,1,0 
A,CH,2016,2,0 
A,CH,2016,3,0 
A,CH,2016,4,0 
A,CH,2016,5,0 
A,CH,2016,6,0 
A,CH,2016,7,0 
A,CH,2016,8,0 
A,CH,2016,9,453128 
A,CH,2016,10,868256 
A,CH,2016,11,1015080 
A,CH,2016,12,650912 
B,CH,2016,1,0 
B,CH,2016,2,0 
B,CH,2016,3,0 
B,CH,2016,4,0 
B,CH,2016,5,0 
B,CH,2016,6,61273 
B,CH,2016,7,27711 
B,CH,2016,8,161780 
B,CH,2016,9,48889 
B,CH,2016,10,72805 
B,CH,2016,11,131466 
B,CH,2016,12,73756 
C,CH,2016,1,0 
C,CH,2016,2,0 
C,CH,2016,3,0 
C,CH,2016,4,0 
C,CH,2016,5,0 
C,CH,2016,6,0 
C,CH,2016,7,0 
C,CH,2016,8,2200 
C,CH,2016,9,111384 
C,CH,2016,10,28758 
C,CH,2016,11,21161 
C,CH,2016,12,0 

IはRチャンクと出力私html_documentにforループを使用したいです。
は、ここに私のコードです:

--- 
title: "QQ Test" 
output: 
html_document: 
    css: custom.css 
    theme: journal 
    toc: true 
    toc_float: 
    collapsed: false 
    smooth_scroll: false 
    toc_depth: 2 
--- 
```{r, echo=FALSE, message=FALSE, warning=FALSE, results = 'asis'} 
knitr::opts_chunk$set(echo = FALSE) 
library(lubridate) 
library(ggplot2) 
library(plotly) 
library(DT) 
QQ <- read.csv("C://Users//PECHEN//Desktop//QQ.csv" , header = T ,colClasses = c("year"="factor", "month"="factor")) 
QQ_list <- split(QQ, factor(QQ$type)) 
QQ_list <- lapply(QQ_list, function(x) { 
    x$date_label <- ymd(paste(x$year, month.abb[ x$month ], 01, sep = "-")) 
    x 
    }) 

for (i in paste(names(QQ_list))) { 
    cat(paste("#", i, "{.tabset .tabset-pills}"), sep = "\n") 
    cat(paste("## Table"), sep = "\n") 
    cat(paste("## Plot"), sep = "\n") 
    cat("\n\n") 
} 
``` 

enter image description here

さて、私の問題は、出力にforループを使用する方法でデータテーブルと、それぞれが自分のタブセットに収まるプロット。
もっと簡潔にするため、私はすでにQQ.csvを3つに分割しました。

QQ <- read.csv("C://Users//PECHEN//Desktop//QQ.csv" , header = T ,colClasses = c("year"="factor", "month"="factor")) 
QQ_list <- split(QQ, factor(QQ$type)) 
QQ_list <- lapply(QQ_list, function(x) { 
    x$date_label <- ymd(paste(x$year, month.abb[ x$month ], 01, sep = "-")) 
    x 
    }) 

QQ_list 


$A 
    type com year month value date_label 
1  A CH 2016  1  0 2016-01-01 
2  A CH 2016  2  0 2016-05-01 
3  A CH 2016  3  0 2016-06-01 
4  A CH 2016  4  0 2016-07-01 
5  A CH 2016  5  0 2016-08-01 
6  A CH 2016  6  0 2016-09-01 
7  A CH 2016  7  0 2016-10-01 
8  A CH 2016  8  0 2016-11-01 
9  A CH 2016  9 453128 2016-12-01 
10 A CH 2016 10 868256 2016-02-01 
11 A CH 2016 11 1015080 2016-03-01 
12 A CH 2016 12 650912 2016-04-01 

$B 
    type com year month value date_label 
13 B CH 2016  1  0 2016-01-01 
14 B CH 2016  2  0 2016-05-01 
15 B CH 2016  3  0 2016-06-01 
16 B CH 2016  4  0 2016-07-01 
17 B CH 2016  5  0 2016-08-01 
18 B CH 2016  6 61273 2016-09-01 
19 B CH 2016  7 27711 2016-10-01 
20 B CH 2016  8 161780 2016-11-01 
21 B CH 2016  9 48889 2016-12-01 
22 B CH 2016 10 72805 2016-02-01 
23 B CH 2016 11 131466 2016-03-01 
24 B CH 2016 12 73756 2016-04-01 

$C 
    type com year month value date_label 
25 C CH 2016  1  0 2016-01-01 
26 C CH 2016  2  0 2016-05-01 
27 C CH 2016  3  0 2016-06-01 
28 C CH 2016  4  0 2016-07-01 
29 C CH 2016  5  0 2016-08-01 
30 C CH 2016  6  0 2016-09-01 
31 C CH 2016  7  0 2016-10-01 
32 C CH 2016  8 2200 2016-11-01 
33 C CH 2016  9 111384 2016-12-01 
34 C CH 2016 10 28758 2016-02-01 
35 C CH 2016 11 21161 2016-03-01 
36 C CH 2016 12  0 2016-04-01 

私はそうtable AAのテーブルに表示することができ

table A <- DT::datatable(QQ_list$A) 

を使用します。

plot A <- ggplot(QQ_list$A, aes(date_label , value)) 

のでplot AAのプロットに表示することができます。

# Monthly Air Quality Graphs 
```{r pressure,fig.width=6,echo=FALSE,message=FALSE,results="asis"} 
attach(airquality) 
for(i in unique(Month)) { 
    cat(" \n###", month.name[i], "Air Quaility \n") 
    #print(plot(airquality[airquality$Month == i,])) 
    plot(airquality[airquality$Month == i,]) 
    cat(" \n") 
} 
``` 

しかし、私はまだデータテーブルggplotを構築することはできません。

は私も@jclouse(how to create a loop that includes both a code chunk and text with knitr in R)によって提供されるこの例を模倣します。

非常に高く評価します。

+0

:リンク以下

for (i in paste(names(QQ))) { cat(paste("#", i, "{.tabset .tabset-pills}"), sep = "\n") cat(paste("## Table"), sep = "\n") DT::datatable(QQ[QQ$type == i,]) cat(paste("## Plot"), sep = "\n") cat("\n\n") } 

チェック。 http://stackoverflow.com/questions/11956520/r-knitr-markdown-output-plots-within-for-loop –

+0

こちらにも参考文献がありますが、それぞれのテーブルやプロットを各タイプで出力することはできません。 http://stackoverflow.com/questions/33269675/loop-in-r-markdown –

答えて