4

我在“knitr”中遇到了一个奇怪的问题,其中包含使用“x + yi”符号直接输入的复数的 R 代码。有关插图,请参阅最小示例: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-patched 中修复。

于 2013-09-19T20:14:02.750 回答