2016-09-19 5 views
0

私はknitrを使ってLaTeXテーブルを繰り返し作成しています。私は各テーブルの前に余分なマークアップが残っていることを除いて、すべてがうまくいきます。ここでは簡単な例ですが、これはもっと複雑な問題、つまりサイズの異なるテーブル、さまざまなデータセットなどのテンプレートとして理想的です。knitrでラテックステーブルを繰り返し生成する

各テーブルの前に余分なテキストを取り除くにはどうすればよいですか?

enter image description here

FWIWは、ここで私はしばらく前に尋ねた同様の質問ですが、私はここにいない人物を、テーブルを作成していますので、私は、これはわずかに異なる解決策だと思う

\documentclass{article} 
\usepackage{setspace, relsize} 
\usepackage[margin=.5in, landscape]{geometry} 
\usepackage{pdfpages} 
\begin{document} 

<<setup, include=FALSE>>= 
opts_chunk$set(echo=FALSE, warning = FALSE, message = FALSE, cache = FALSE, error = FALSE) 
library("ggplot2") 
library("knitr") 
library("Hmisc") 

mytable_function = function(mydata){ 
    foo = as.matrix(head(mydata)) 
    colnames(foo) = names(mydata) 
    rownames(foo) = c("First", "Second", "Third", "Fourth", "Fifth", "Sixth") 
    return(foo) 
} 

template <- "<<thisthing-{{i}}>>= 
mytable = mytable_function(iris[iris$Species == unique(iris$Species)[i],]) 
latex(mytable, file = '', 
     title = '', 
     where = '!h', 
     caption = 'This is a table', 
     col.just = rep('r', ncol(mytable))) 
@" 

for(i in 1:3){ 
    cat(knit(text = knit_expand(text = template, i = i, quiet = TRUE))) 
} 

@ 

\end{document} 
Print a list of dynamically-sized plots in knitr

+0

これらのテーブルを別のドキュメントで使用する場合は、それぞれのテキスト出力を保存してから、 '\ input'を使用するとよいでしょうそれが正しいLatexコマンド)を使用して、最終的な文書でそれらを読むことができます。 1つの例は 'xtable'を使用して' xtable'オブジェクトを作成し、 'print()'で出力を保存するためにファイル引数を追加することができます。私は 'Hmisc'関数も同様の議論をしていると思います。 – lmo

答えて

1

提供されたコードが提示した出力と一致しません。実際には、出力はまったく生成されません。

ステップ0:文書にのみチャンクに質問

  • include=FALSEからの出力を再現することは非常に致命的である... echo=FALSEで置き換えます。
  • メインチャンク(setup)とテンプレートチャンクには、results="asis"が必要です。
  • message=FALSEは、チャンクオプションsetupである必要があります。デフォルトのオプションをsetupに設定しても、現在のチャンクからのメッセージには影響しません。

ステップ1:即時問題

このライン

cat(knit(text = knit_expand(text = template, i = i, quiet = TRUE))) 

cat(knit(text = knit_expand(text = template, i = i), quiet = TRUE)) 

quietことshoud knit、ないknit_expandの引数です。

ステップ2:より良いソリューション

これは動作しますが、それは過度に複雑行き過ぎです。 fig.heightは、そのような場合に必要とされるようにベクトル化されていないため、動的に生成されたチャンクにリンクした回答です。

\documentclass{article} 
\begin{document} 

<<setup, echo = FALSE, results='asis', message = FALSE>>= 

mytable_function = function(mydata){ 
    foo = as.matrix(head(mydata)) 
    colnames(foo) = names(mydata) 
    rownames(foo) = c("First", "Second", "Third", "Fourth", "Fifth", "Sixth") 
    return(foo) 
} 

for(i in 1:3){ 
    mytable = mytable_function(iris[iris$Species == unique(iris$Species)[i],]) 
    Hmisc::latex(mytable, 
     file = '', 
     title = '', 
     where = '!h', 
     caption = 'This is a table', 
     col.just = rep('r', ncol(mytable))) 
} 

@ 
\end{document} 
+1

これがなぜ落とされたのか本当に不思議です(?)。 –

関連する問題