2017-07-04 15 views
2

私はRstudioのrmarkdownドキュメントで作業しています。ここでは、インラインRコードとコードチャンクのRコードの動作の違いに気付いています。たとえば、コードチャンクでlubridate::now()という関数を使用すると、Rmdドキュメントを編成するときにタイムゾーンが出力に追加されることがわかります。しかし、同じRコード、つまりlubridate::now()をインラインコードとして使用してドキュメントを編むと、出力にタイムゾーンが含まれていないことがわかります。この違いを理解するのを助けてくれますか?rmarkdownインラインコードとコードチャンク

ありがとうございました。

答えて

4

インラインコードは、追加のレイヤー - 「インライン」フックを通過します。 knitr manualから:

各チャンクの
    1. を、(チャンクオプションに従ってコードが評価パッケージ(ウィッカム、2016)を用いて評価され、その結果 を濾過することができる、例えばecho = FALSEはRのソースコードを削除します)...
    2. 通常のテキストの場合、knitrはインラインのRコード(例えば\ Sexpr {})を見つけて評価します。出力はインラインフックでラップされます。あなたのRMDファイルがある場合は

      > knitr::knit_hooks$get("inline") 
      function (x) 
      { 
          if (is.numeric(x)) 
           x = round_digits(x) 
          paste(as.character(x), collapse = ", ") 
      } 
      <environment: namespace:knitr> 
      

      inline date: `r lubridate::now()` 
      
      ```{r, echo=F} 
      lubridate::now() 
      print(lubridate::now()) 
      paste(as.character(lubridate::now()), collapse = ", ") 
      ``` 
      

      出力は次のとおりです。

      inline date: 2017-07-04 22:43:42 
      
      ## [1] "2017-07-04 22:43:42 CDT" 
      ## [1] "2017-07-04 22:43:42 CDT" 
      ## [1] "2017-07-04 22:43:42" 
      

      お知らせインライン出力

  • inline hookがで調べることができますmチャンクからの出力の第3行をアツチします。とにかくこれは私の最高の推測です。

    +0

    これは非常に良い説明です! –

    +0

    ありがとうございました - それはまさに私が知りたかったものです! –

    0

    インラインコードの場合、文章で計算された値を使用できるように、「装飾」が削除されています。 チャンクを使用すると、結果を表示するかどうかにかかわらず、多くの処理を行うことができます。ドキュメント内にコードとレスポンスが表示されている場合は、コードをコピーしてコンソールに直接貼り付け、結果を比較することができます。

    関連する問題