4

「x + yi」表記を使用して直接入力された複素数を含む R コードで、「knitr」で奇妙な問題に遭遇しました。図については、最小限の例を参照してください: http://goo.gl/Yj77kI

サンプル コードは、R コンソールと Sweave でコンパイルされたコード チャンクの両方で正しく評価され、次のようになります。

> 1i^2
[1] -1+0i

ただし、同じドキュメントで「knitr」を使用しようとすると、虚数単位が失われるようで、次のようになります。

1^2
## [1] 1

何か案は?

乾杯、 アンジェイ

の出力SessionInfo():

R version 3.0.0 (2013-04-03)
Platform: x86_64-unknown-linux-gnu (64-bit)

locale:
[1] LC_CTYPE=en_US.UTF-8       LC_NUMERIC=C               LC_TIME=en_US.UTF-8          LC_COLLATE=en_US.UTF-8     LC_MONETARY=en_US.UTF-8   
[6] LC_MESSAGES=en_US.UTF-8    LC_PAPER=C                 LC_NAME=C                  LC_ADDRESS=C               LC_TELEPHONE=C            
[11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C       

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

other attached packages:
[1] knitr_1.4.1

loaded via a namespace (and not attached):
[1] digest_0.6.3   evaluate_0.4.7 formatR_0.9    highr_0.2.1    stringr_0.6.2  tools_3.0.0   
4

1 に答える 1

3

Yihui は、このバグの原因がにあることを確認しました。このバグは、テキスト列getParseData()の のレンダリングに失敗します。i

getParseData(parse(text="3i"))
#   line1 col1 line2 col2 id parent     token terminal text
# 1     1    1     1    2  1      2 NUM_CONST     TRUE    3
# 2     1    1     1    2  2      0      expr    FALSE  

formatRパッケージ (knitr がソース コードを「整頓」するために使用)highrパッケージ ( knitrがコードを強調表示するために使用) はどちらも に依存して いるため、 'ed ドキュメントで適切な結果を得るにはコード チャンクをgetParseData()設定する必要がありました。highlight=FALSE, tidy=FALSEknit()

Yihui のR-devel メーリング リストへの報告に続いて、 Duncan Murdoch はgetParseData()、R-3.0.2 のリリース後の最初の R パッチで修正されると発表しました。

于 2013-09-19T20:14:02.750 に答える