我在'knitr'中遇到一个奇怪的问题,R代码包含使用“x + yi”表示法直接输入的复数。有关说明,请参阅最小示例:http://goo.gl/Yj77kI
示例代码在R console中正确评估,并在使用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
答案 0 :(得分: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使用) 突出显示代码)取决于getParseData()
,因此必须在代码块中设置highlight=FALSE, tidy=FALSE
才能在knit()
ed文档中获得正确的结果。
在Yihui's report向R-devel邮件列表Duncan Murdoch announced后,getParseData()
将在R-3.0.2发布后的第一个R-patched中修复。{/ p >