2013-07-18 4 views
8

私は2つの両方が2つの列を持っているdata.frames、しかし、行の数が異なる...2つのdata.framesをknitrで並べます。

私はknitrする新しい(ともRに非常に新しい)ですので、これはばかな質問かもしれません。私は彼らのニットの報告書にそれらを示したいが、狭いテーブルを別の狭いテーブルの下に置いておけば、隣り合わせに簡単に座ることができない。 お互いの隣に表示する方法はありますか?

更新

[OK]を、以下の提案をもとに、ここで私は(私は今、一緒に3つのテーブルを入れている)やったことだ:

```{r fig.height=13.5, fig.width=10, echo=FALSE, comment=""} 
grid.arrange(textGrob("Visual Clusters", gp=gpar(fontsize=14, fontface="bold")), 
      textGrob("We have biofilm data for...", gp=gpar(fontsize=14, fontface="bold")), 
      textGrob("Left Over Isolates", gp=gpar(fontsize=14, fontface="bold")), 
      tableGrob(clusters, show.rownames=FALSE, gp=gpar(fontsize=10)), 
      tableGrob(clust_ab, show.rownames=FALSE, gp=gpar(fontsize=10)), 
      tableGrob(n_clust, show.rownames=FALSE, gp=gpar(fontsize=10)), 
      ncol=3, nrow=2, heights=c(1,30)) 
``` 

これはのためのタイトルで、すでに本当によさそうです3つのテーブルと番号付きの行なし。
私がこれまでに解決できなかった唯一の問題は、テーブルがすべて水平に中央に配置されていることです。

+0

MarkdownまたはLaTeXを使用していますか?後者の場合は、LaTeXテーブルを使って解決策を決めるでしょうか? –

+0

これまではマークダウンを使用しています。私はまだLaTeXで作業していません。 –

+0

少しCSS/HTMLを使用すると可能です。あなたがプロットのアプローチに満足しているので、私は別の答えを投稿するつもりはありません –

答えて

12

knitrの開発版は、(on Github、そこにインストール手順に従います)文字ベクトルとしてテーブルを返すことができますkable()機能を有しています。 2つのテーブルを収集し、それらを親テーブルの2つのセルに配置することができます。ここでは簡単な例です:

```{r two-tables, results='asis'} 
library(knitr) 
t1 = kable(mtcars, format='html', output = FALSE) 
t2 = kable(iris, format='html', output = FALSE) 
cat(c('<table><tr valign="top"><td>', t1, '</td><td>', t2, '</td><tr></table>'), 
    sep = '') 
``` 

あなたはまた、右/左にテーブルをフロートするstyle="float: [left|right]"のようなCSSのトリックを使用することができます。

セルの埋め込みとスペースを設定する場合は、表の属性cellpadding/cellspacingを通常どおり使用できます。

```{r two-tables, results='asis'} 
library(knitr) 
t1 = kable(mtcars, format='html', table.attr='cellpadding="3"', output = FALSE) 
t2 = kable(iris, format='html', table.attr='cellpadding="3"', output = FALSE) 
cat(c('<table><tr valign="top"><td>', t1, '</td>', '<td>', t2, '</td></tr></table>'), 
    sep = '') 
``` 

上記のコードが実際に動作しているのは、RPubs postを参照してください。

+0

ありがとう!これで私は欲しいものを正確に行うことができ、テーブルを正しく配置するために戦う必要はありません。 –

+0

kableのセルのパディングとスペースに影響を与える方法はありますか?私のデータフレームは、1つの列に名前があり、もう1つの数字に1桁の数字があり、読みやすくするにはあまりにも近くにあります。 –

+1

@ Lilith-Elinaセルパディングを設定する答えを更新しました。 –

5

data.framesの「イメージ」について解決しますか?明らかに私の解決策は粗末なものであり、細かい点(例えばdata.framesの間隔など)に気をつけてください。

Two data.frames, side by side 
======================================================== 

```{r} 
library(gridExtra) 
x <- data.frame(a = runif(5), b = runif(5)) 
y <- data.frame(a = runif(7), b = runif(7)) 

grid.arrange(tableGrob(x), tableGrob(y), ncol = 2) 
``` 

enter image description here

+0

恐ろしく、ありがとう!私は、これより長いdf(48行)を短い(わずか7行)隣の完全なものにするためにそれを試す必要がありますが、非常に有望です。 :-) –

+0

これは素晴らしいです!私は同じテーブルで2つのテーブルをどのように始めることができるのか知っていますか? – eliavs

関連する問題