9

以前、R で HTML テーブルをエクスポートし、罫線を制御する方法について質問しました。

テーブルを作成するとき、テーブルの書式設定は主にその時点で表示されるテキストとマークアップによって決定される LaTeX に慣れています。R コード チャンクはその時点で LaTeX テーブル マークアップを出力できるため、これは Sweave ではうまく機能します。xtableまた、テーブルの HTML マークアップを生成できるツールがあることも理解しています。

ただし、HTML テーブルの制御はスタイル シートに依存しているようです。スタイル シートは、R コード チャンクが配置される場所ではなく、ドキュメントのヘッダーに表示されることを意図しています。もちろん、コンテンツをスタイル シートに入れることもできますが、科学的なアプリケーションでは、テーブルごとにいくつかの点で異なる非常に特殊なテーブル フォーマットが存在することがよくあります。

したがって、私の質問:

  • 一般に、R Markdown のような文芸的なプログラミングを使用して HTML テーブルをフォーマットする方法、または出力のフォーマットでドキュメント内の別の場所に出力を作成する必要がある場合 (ヘッダー内のテーブルの CSS) R コード チャンクはどこに配置されますか (つまり、本体内のテーブル自体)?
4

5 に答える 5

5

ツールチェーンをいじらずに 3 つの方法を考えることができます。それらはすべてハックのようなものです。

  1. <style>本体で右を出力するだけです。これは技術的には有効ではありませんが、どの主要なブラウザーでも問題なく動作します。

  2. <style>実行時にブロックを作成し、それを先頭に追加する JavaScript を発行します (ここに1 つの方法があります)。これは、HTML ソースと R コードでは少し大雑把に見えますが、動作し、検証されます。

  3. スコープ スタイル ブロックを使用します。これは、scope 属性が HTML5 で新しく追加されたものであり、主要なブラウザにはまだ実装されていないことを除いて、まさにあなたが探しているものです。ただし、一意に生成された ID に基づいてスタイルを作成する場合 (つまり、ドキュメント全体に適用されても何も混乱しないようにルールが記述されている場合)、ブラウザーは「スコープ」属性とすべてを無視するだけだと思います。適切に動作します。これは事実上、たまたま検証されるオプション 1 のバージョンになります。

(個人的には#3に行きます。)

まだお済みでない場合は、RStudio サポート フォーラムでスレッドを開始することをお勧めします。厳密には RStudio の問題ではありませんが、R Markdown でレポートを公開するというエンド ツー エンドのシナリオについて多くの作業を行っていることは明らかであり、具体的な例について詳しく知りたいと思っています。テーブルは、人々がこのレポートを使用して行うことの大きな部分を占めることは明らかであり、これが現在の弱点であることはわかっており、将来のバージョンで対処したいと考えています.

于 2012-06-05T07:53:11.263 に答える
2

別の方法は、Panderを R マークダウン バックエンドとして使用することです (このマーケティングのような回答で申し訳ありませんが、私のPandoc.brew関数はこの目的に非常に便利だと思います)。

knitr(マークダウン形式のファイルで R コマンドを解析/評価する) に似ていますがbrew、R コード ブロックの構文を使用します (たとえば<%...%>、一般的な R コード - ループなどのよう<%=...%>に、ブロックで結果を返すため)。しかし、コードブロックになるだけでなく、 Rオブジェクトを(IMHO)きれいなPandocのマークダウン形式に変換する私の汎用メソッドを実行するのbrewとは異なります。Pandoc.brewcatpander

そのPandoc.brewため、マークダウン形式のファイルを実行すると、すべての R コード ブロックが実行されたクリーンなマークダウン ファイルが生成されます。xtableまた、その他の微調整を行う必要はありません (画像を生成するすべての R コード ブロックがpngファイルとマークダウン テキスト ファイルにリンクされています)。

そして、私がここで答え始めた理由について: にpander特別なオプションを渡すことができますpandoc。たとえば、生成された HTML のヘッダーにカスタム CSS スタイルシート (または JS など) を追加できます。 詳細については、Pandoc のホームページを参照してください。それに基づいて、CSS ファイルを簡単に追加したり、一連のスタイル パラメータを追加したりすることもできます。panderこれはで行うことができPandoc.convertますoptionbrewところで、フォークされた関数を使用する必要さえありません。たとえば、マークダウン ファイルを生成knitrし、上記の関数で Pandoc を呼び出すことができます。

pander生成された HTML ファイルにいくつかの CSS/JS を追加します。これにより、(IMHO) 非常にきれいな出力が生成されますが、簡単にカスタマイズしてそこに独自のファイルを追加することができます。

例:この非常に短いマークダウン構文の brew fileから編集された、デフォルトでこのマークダウンに基づいたこの HTML ファイルを取得します。ところで、私の github ページも私のマークダウン パーサーによって生成/自動的にスタイル設定されました。ぜひお試しいただければ幸いです:)Pandoc.brew


:上記の呼び出しを試すには、Pandoc事前にインストールする必要があります。また、最新バージョンの両方rapport、両方 pander. インストールの詳細を参照してください。

于 2012-06-02T11:36:36.420 に答える
2

問題を完全に解決しないオプションの 1 つは、次を使用することgvisTableです。

基本的な gvisTable は次のとおりです。

```{r message=FALSE}
# install.packages("googleVis")
library(googleVis)
library(MASS)
data(Animals)
```

```{r results='asis'}
tab1 <- gvisTable(Animals, 
                   options = list(width = 600, height = 650, 
                                  page = "enable",
                                  pageSize = nrow(Animals)))
print(tab1, "chart")
```
  • ?print.gvisオブジェクトを印刷するためのいくつかのオプションについて説明しgvisます。
  • 特に、tag="chart"R Markdown ドキュメントにはオプションが必要です。これは、出力が、デフォルトの完全な HTML ページではなく、オブジェクトに必要なものであることを意味するためです。
  • これの出力ともう少しここを参照してください
于 2012-06-05T06:54:38.350 に答える
1

わかりました、私が今それを手に入れたことを望みます。追加のknitrオプションをいくつか設定する必要があります。必要に応じて、cssを動的にcat()することもできます。

<!DOCTYPE html>
<head>
<style type="text/css">
.greenback {
  background-color: teal;
    color: white;
}
.greenback td {
  border: dotted gray;
}
.bluescreen {
    background-color: blue;
    color: white;
}
.bluescreen td {
  border: thick solid;
  padding:2px;
  margin:2px;
}

</style>
</head>

<body>
<table class="greenback">
<tr><td>Hello</td><td>Mars</td><tr>
<tr><td>World</td><td>Moon</td><tr>
</table>

Could use some xtable code here instead.

<!--begin.rcode
cat('
<table class="bluescreen">
<tr><td>Hello</td><td>Mars</td><tr>
<tr><td>World</td><td>Moon</td><tr>
</table>
')
    end.rcode-->

</body>
</html>
于 2012-06-01T07:47:15.840 に答える
1

Neil Saunders には、RStudio を使用して生成された HTML 用の CSS のカスタマイズに関するチュートリアルがあります。組み込みのスタイル ファイルを変更し、この代替ファイルをソースする方法を示します。

于 2012-08-27T01:03:09.743 に答える