R 内联刀的控制数字打印
我正在进行一个将knitr项目转换为HTML(此时)。我试图使用R 内联刀的控制数字打印,r,knitr,R,Knitr,我正在进行一个将knitr项目转换为HTML(此时)。我试图使用print(x,digits=2)功能控制数字打印,该功能在控制台中运行良好。然而,当我编织降价时,它不会产生任何内联内容。例如: Pi is `r pi`. Pi printed is `r print(pi, digits = 2)`. Pi rounded is `r round(pi,2)`. 编织时产生以下效果: 圆周率是3.1415927。圆周率是印刷的。圆周率为3.14 使用print的第二条语句不包括计算。如您所见
print(x,digits=2)
功能控制数字打印,该功能在控制台中运行良好。然而,当我编织降价时,它不会产生任何内联内容。例如:
Pi is `r pi`.
Pi printed is `r print(pi, digits = 2)`.
Pi rounded is `r round(pi,2)`.
编织时产生以下效果:
圆周率是3.1415927。圆周率是印刷的。圆周率为3.14
使用print
的第二条语句不包括计算。如您所见,我的解决方案是使用round
,但我想知道为什么会发生这种情况,或者这是否是预期的行为。另一个解决方案是在代码块中使用选项(scipen=0,digits=2)
(如on),但我只想控制输出的特定部分
类似的,未回答的问题:中解释了print()
不起作用的原因。此外,请注意,print(x)
通常返回invisible(x)
,因此传递给knitr的实际值仍然是x
,并且数字=2
没有意义print()
通常仅用于其副作用(在控制台/终端中打印),并且不会修改传递给它的值。总而言之:
打印(x)
返回不可见(x)
,因此knitr忽略它李>
print(x,digits=2)
不会将x
四舍五入作为其返回值,因此无法通过print()
获得所需的位数round()
、formatC()
和sprintf()
都是格式化数字的正确方法。这可能与print
返回NULL
对象有关。可能knitr
需要返回一个实际对象,并执行它自己的内部打印。也许formatC(pi,digits=3)
或sprintf(“%0.2f”,pi)
就足够了?谷歌搜索到:@J\F这证实了lmo所说的。对于我的情况,我不能简单地删除print命令,但是一些替代函数可以工作。