105

KnitRと、Rドキュメントとレポートの生成におけるMarkdownの使用について学び始めたところです。これは、私が自分の仕事に関係しているという日々の報告の多くに最適のようです。ただし、私が見ていないことの1つは、Markdownフォーマットを使用してデータフレームとテーブルを印刷する簡単な方法です(のようなものですxtableが、LaTeXやHTMLの代わりにMarkdownを使用します)。xtableからのHTML出力を埋め込むことができることは知っていますが、Markdownベースのソリューションがあるかどうか疑問に思っていました。

4

8 に答える 8

32

これを行う2つのパッケージはパンダーです

library(devtools)
install_github('pander', 'Rapporter')

またはASCII

panderは、レポートの作成に対するわずかに異なるアプローチです(ただし、この機能には役立つ場合があります)。

ascii(または他のさまざまなマークダウンフレーバー)printを使用できるようになりますtype = 'pandoc

library(ascii)
print(ascii(head(iris[,1:3])), type = 'pandoc')



    **Sepal.Length**   **Sepal.Width**   **Petal.Length**  
--- ------------------ ----------------- ------------------
1   5.10               3.50              1.40              
2   4.90               3.00              1.40              
3   4.70               3.20              1.30              
4   4.60               3.10              1.50              
5   5.00               3.60              1.40              
6   5.40               3.90              1.70              
--- ------------------ ----------------- ------------------

どちらの場合も、を使用pandocしてマークダウンから目的のドキュメントタイプに変換するように指示されていますが、を使用すると、このパッケージとstyle='rmarkdown'互換性のあるテーブルが作成され、で変換が組み込まれます。markdownrstudio

于 2013-03-18T22:45:47.853 に答える
26

私がやろうと決心したことでこれを更新したかっただけです。現在、hwriterパッケージを使用してテーブルを印刷し、row.*およびcol.*機能を使用して CSS クラスをさまざまな要素に配置しています。次に、カスタム CSS を作成して、自分のディスプレイを思いどおりに作成しました。したがって、他の誰かが同様のことを扱っている場合の例を次に示します。

まず、knittingMarkdown を HTML に変更するファイルを作成します。

FILE: file_knit.r
#!/usr/bin/env Rscript

library(knitr)
library(markdown)

knit("file.Rmd")
markdownToHTML("file.md","file.html",stylesheet="~/custom.css")

次に、実際の Markdown ファイルを作成します。

FILE: file.Rmd
Report of Fruit vs. Animal Choices
==================================

This is a report of fruit vs. animal choices.

```{r echo=FALSE,results='asis'}
library(hwriter)
set.seed(9850104)
my.df <- data.frame(Var1=sample(x=c("Apple","Orange","Banana"),size=40,replace=TRUE),
                    Var2=sample(x=c("Dog","Cat","Bunny"),size=40,replace=TRUE))

tbl1 <- table(my.df$Var1,my.df$Var2)

tbl1 <- cbind(tbl1,rowSums(tbl1))
tbl1 <- rbind(tbl1,colSums(tbl1))

colnames(tbl1)[4] <- "TOTAL"
rownames(tbl1)[4] <- "TOTAL"

# Because I used results='asis' for this chunk, I can just use cat() and hwrite() to 
# write out the table in HTML. Using hwrite()'s row.* function, I can assign classes
# to the various table elements.
cat(hwrite(tbl1,
           border=NA,
           table.class="t1",
           row.class=list(c("header col_first","header col","header col","header col", "header col_last"),
                          c("col_first","col","col","col","col_last"),
                          c("col_first","col","col","col","col_last"),
                          c("col_first","col","col","col","col_last"),
                          c("footer col_first","footer col","footer col","footer col","footer col_last"))))
```

最後に、カスタム CSS ファイルを作成するだけです。

FILE: custom.css
body {
  font-family: sans-serif;
  background-color: white;
  font-size: 12px;
  margin: 20px;
}

h1 {font-size:1.5em;}

table {
  border: solid;
  border-color: black;
  border-width: 2px;
  border-collapse: collapse;
  margin-bottom: 20px;
  text-align: center;
  padding: 0px;
}

.t1 .header {
  color: white;
  background-color: black;
  border-bottom: solid;
  border-color: black;
  border-width: 2px;
  font-weight: bold;
}

.t1 .footer {
  border-top: solid;
  border-color: black;
  border-width: 2px;
}

.t1 .col_first {
  border-right: solid;
  border-color: black;
  border-width: 2px;
  text-align: left;
  font-weight: bold;
  width: 75px;
}

.t1 .col {
  width: 50px;
}

.t1 .col_last {
  width: 50px;
  border-left: solid;
  border-color: black;
  border-width: 2px;
}

実行./file_knit.rすると、次のような file.html が得られます。

出力例

ですから、これが Markdown 出力でもう少し書式設定をしたい他の人に役立つことを願っています!

于 2013-03-22T14:20:39.253 に答える
18

panderパッケージには次の関数が含まれています。

> library(pander)
> pandoc.table(head(iris)[, 1:3])

-------------------------------------------
 Sepal.Length   Sepal.Width   Petal.Length 
-------------- ------------- --------------
     5.1            3.5           1.4      

     4.9             3            1.4      

     4.7            3.2           1.3      

     4.6            3.1           1.5      

      5             3.6           1.4      

     5.4            3.9           1.7      
-------------------------------------------
于 2013-03-18T22:45:27.840 に答える
12

独自のカスタマイズされた関数を作成することはそれほど難しくありません。の rmarkdown テーブルを生成するための非常に単純な概念実証を次に示しますdata.frame

   rmarkdownTable <- function(df){
      cat(paste(names(df), collapse = "|"))
      cat("\n")
      cat(paste(rep("-", ncol(df)), collapse = "|"))
      cat("\n")

      for(i in 1:nrow(df)){
        cat(paste(df[i,], collapse = "|"))
        cat("\n")
        }
    invisible(NULL)
    }

.Rmd ドキュメントでは、関数を次のように使用しますresults = 'asis'

```{r, results = 'asis'}
rmarkdownTable <- function(df){
  cat(paste(names(df), collapse = "|"))
  cat("\n")
  cat(paste(rep("-", ncol(df)), collapse = "|"))
  cat("\n")

  for(i in 1:nrow(df)){
    cat(paste(df[i,], collapse = "|"))
    cat("\n")
    }
invisible(NULL)
}

rmarkdownTable(head(iris))
```

上記のコードは、次の図を示します (例では、これは pdf 出力ですが、表は markdwon にあるため、html または word に編むこともできます)。

ここに画像の説明を入力 ここから、そして他の人のコードを読むことで、テキストを操作して必要なテーブルを生成し、よりパーソナライズされた関数を作成する方法を理解できます。

于 2015-05-22T21:52:09.500 に答える
3

マークダウン ドキュメントでは、knitr::kable と xtable を組み合わせて使用​​します。

library("knitr","xtable")

単純な data.frame の場合 -

kable(head(mtcars[,1:4]),format="markdown")
kable(head(mtcars[,1:4]),format="pandoc",caption="Title of the table")

format="pandoc"キャプションのようなより多くのオプションを許可します。

さて、モデルまとめの組み合わせ。

data(tli)
fm1 <- aov(tlimth ~ sex + ethnicty + grade + disadvg, data=tli)
kable(xtable(fm1), caption = "Annova table")

さらに多くのオプションについては、stargazerの代わりにパッケージを見てくださいxtable

個人使用の例

于 2015-06-04T00:03:07.113 に答える