14

最近導入されたfread関数 fromを使用して、data.tableデータ ファイルを読み取ります。コードを Knitr (Rmd) ドキュメントにラップすると、次のような奇妙な出力に気付きました。

## 
0%

verboseのオプションがfreadFALSE に設定されていても。以前はsinkこの出力を非表示にしていましたが、正確な問題をパッケージの作成者に報告したいと思います。最小限の例を次に示します。

library(knitr)

test = "```{r}
require(data.table) 
fread('1 2 3\n')
```"
knit2html(text=test, output="test.html")
browseURL("test.html")

0%出力とは何ですか?

4

3 に答える 3

15

これは % プログレス カウンターです。私にとっては、0%、5%、10%、... 95%、100% (たとえば) を最後に出力して、プロンプトで入力したときに\rへの呼び出しのすぐ下の 1 行に表示されるようにします。fread

しかし、関数、バッチ、knitr から呼び出された場合、これは望ましくありません。これは削除されました。v1.8.9 (rev 851) の NEWS から:

  • % プログレス コンソール メーターが削除されました。出力は、バッチ モード、ログ ファイル、および処理しないレポートで不便でした\r。がどこから呼び出されているかを検出するのは非常に困難でした。さらに、 C の for ループ内にコードを保存することで、コードを削除すると少しfread速度が向上します (これが、代わりにオプションにしなかった理由です)。freadオペレーティング システムのシステム モニタを使用して、fread が進行中であることを確認します。強調表示してくれた Baptiste に感謝 :
    Knitr から呼び出されたときの fread からの奇妙な出力

完全を期すための簡単なリマインダーです。上から?fread:

この機能はまだ開発中です。たとえば、日付は文字として読み取られ (後で優れた fasttime パッケージまたは標準の基本関数を使用して変換できます)、埋め込まれた引用符 ("\"" および """") には問題があります。修正済みで未実装の機能もありますが、多くの場合は動作する場合がありますので、datatable-help または Stack Overflow の data.table タグに報告してください。

まだ本番用ではありません。クラッシュしたりバグがあったりするという意味で不安定だからではありません (あなたのケースで安定しているかどうかはテストでわかります)。つまり、下位互換性のない変更 (できればマイナーな変更) を行う予定です。なぜCRANにリリースされたのですか?R-devel の新しいより厳格なテストに準拠するために CRAN メンテナーからメンテナンス リリースが要求されたため、いくつかの Bioconductor パッケージは data.table に依存しており、Bioconductor パッケージは R-devel チェックに合格する必要があります。恐れを取り除くよりも、恐れを残してこれらの段落を書く方が早かった.

于 2013-03-13T00:01:18.123 に答える
12

通報しても問題ありません。

Matthew Dowle が述べたように、これはプログレス カウンターです。fread

results = 'hide'これらの結果が含まれないように設定できます

library(knitr)

test = "```{r, results = 'hide'}
require(data.table) 
fread('1 2 3\n')
```"
knit2html(text=test, output="test.html")
browseURL("test.html")

ほら、進行状況バーがありません。


results = 'hide'実用的なレベルでは、このようinclude = FALSEな手順を実行することは賢明だと思います。

この種の読み取りを段階的に繰り返したくないでしょう。実際には、データを 1 回だけ読み取りたい場合は、(saveなどを使用しsaveRDSて) シリアル化するので、次回はそれを使用できます (より高速になります)。 )。


コメントに照らして編集する

処理をいくつかの小さなチャンクに分割します。その後、読み取りをチャンクに含めることはできませんが、評価されていないダミー バージョンを含めることができます (コードは表示できますが、結果は含めません)。

```{r libraries}
require(data.table) 
 ```

```{r loaddata, include = FALSE}
DT <- fread('yourfile')
```

```{r loaddummy, ref.label = 'loaddata', eval = FALSE, echo = TRUE}
```

```{r dostuff}
# doing other stuff
```
于 2013-03-13T00:26:25.967 に答える