2017-08-25 3 views
1

この奇妙な動作がkableに気づきました。Rチャンクを実行した後にknitr :: kableがきれいに印刷されない

> knitr::kable(head(iris, 3)) 


| Sepal.Length| Sepal.Width| Petal.Length| Petal.Width|Species | 
|------------:|-----------:|------------:|-----------:|:-------| 
|   5.1|   3.5|   1.4|   0.2|setosa | 
|   4.9|   3.0|   1.4|   0.2|setosa | 
|   4.7|   3.2|   1.3|   0.2|setosa | 

ここで、ファイル>新規ファイル> Rノートブックを実行します。デモノートが作成され、1つのチャンクにはplot(cars)が含まれています。ノートブック内でそのチャンクを実行してください。

> plot(cars) 

次に、テーブルを再度印刷してください。今回は出力が異なって見えます。どうして?

> knitr::kable(head(iris, 3)) 
[1] "| Sepal.Length| Sepal.Width| Petal.Length| Petal.Width|Species |" 
[2] "|------------:|-----------:|------------:|-----------:|:-------|" 
[3] "|   5.1|   3.5|   1.4|   0.2|setosa |" 
[4] "|   4.9|   3.0|   1.4|   0.2|setosa |" 
[5] "|   4.7|   3.2|   1.3|   0.2|setosa |" 
attr(,"format") 
[1] "markdown" 
attr(,"class") 
[1] "knit_asis" 
attr(,"knit_cacheable") 
[1] NA 



> packageVersion("knitr") 
[1] ‘1.17’ 


> sessionInfo() 
R version 3.3.3 (2017-03-06) 
Platform: x86_64-apple-darwin13.4.0 (64-bit) 
Running under: OS X El Capitan 10.11.6 

locale: 
[1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8 

attached base packages: 
[1] stats  graphics grDevices utils  datasets methods base  

loaded via a namespace (and not attached): 
[1] tools_3.3.3 highr_0.6 knitr_1.17 


> RStudio.Version() 
$citation 

To cite RStudio in publications use: 

    RStudio Team (2016). RStudio: Integrated Development for R. RStudio, 
    Inc., Boston, MA URL http://www.rstudio.com/. 

A BibTeX entry for LaTeX users is 

    @Manual{, 
    title = {RStudio: Integrated Development Environment for R}, 
    author = {{RStudio Team}}, 
    organization = {RStudio, Inc.}, 
    address = {Boston, MA}, 
    year = {2016}, 
    url = {http://www.rstudio.com/}, 
    } 


$mode 
[1] "desktop" 

$version 
[1] ‘1.0.153’ 

答えて

1

あなたはそのチャンクを実行すると、検索リストにtools:rstudio環境はknitrパッケージ内の内部と異なるprint.knitr_kableと呼ばれる機能を追加するために変更されます。ここで

は私が前に見たものです。

> ls("tools:rstudio") 
[1] "debugSource"    "knit_with_parameters"  
[3] "registerShinyDebugHook" "RStudio.Version"   
[5] "rstudioDiagnosticsReport" "RStudioGD"    
[7] "source.with.encoding" 

、ここでは、私が後に見たものです。何らかの理由で

> ls("tools:rstudio") 
[1] "debugSource"     "dplyr_tibble_print_original" 
[3] "knit_with_parameters"  "print.knitr_kable"   
[5] "registerShinyDebugHook"  "RStudio.Version"    
[7] "rstudioDiagnosticsReport" "RStudioGD"     
[9] "source.with.encoding" 

tools:rstudio機能ではなく、元の一つで実行されます。私はdetach("tools:rstudio")を実行して元の動作を元に戻すことができますが、それはRstudioをいくつかの方法で混乱させるので、推奨しません。あまり極端な方法は、

e <- as.environment("tools:rstudio") 
e$print.knitr_kable <- knitr:::print.knitr_kable 

を言うことですが、それは続かない:あなたは、ノートブックでチャンクを実行するたびにRStudioは明らかにそれを修正します。印刷するたびに明示的な呼び出しを行うこともできます(例:

knitr:::print.knitr_kable(knitr::kable(head(iris, 3))) 

おそらく最良の解決策は、それがそうでなければRStudioのノートブックとかなり印刷で実行した場合RStudioが何を望んでい、またはRStudioはそれがノートブックにないときknitr機能を実行するように変更するために変更することknitrためでありますしかし、これは大きな優先事項ではないと私は想像しています。ノートブックを使っているのであれば、コンソールで何を見ているのですか?

+0

ありがとうございます! knitr ::: print.knitr_kableは合理的な解決策です。私が気にする理由について:kableは、データフレームをきれいに印刷するのに非常に便利です。典型的な使用例:Slackで同僚と結果を共有する。また、チャンクを実行すると状態がこのように変わる可能性があることに少し不満を抱いています。 – Shantanu

+0

もう少し見てきましたが、これはRStudioコードのバグのようです。それを修正するためにプルリクエストを提出します。 – user2554330

+0

それを見ていただきありがとうございます!私は先に進み、この答えを受け入れます。 – Shantanu

関連する問題