我正在开发一个针对HTML的knitr项目(此时)。我试图使用在控制台中工作的print(x, digits = 2)
函数来控制数字打印。但是,当我编织降价时,它不会产生任何内联内容。例如:
Pi is `r pi`.
Pi printed is `r print(pi, digits = 2)`.
Pi rounded is `r round(pi,2)`.
编织时产生以下内容:
Pi是3.1415927。皮印是。 Pi舍入是3.14。
使用print
的第二个语句不包括计算。正如您所看到的,我的解决方案是使用round
,但我想知道为什么会发生这种情况或是否是预期的行为。另一个解决方案是在代码块中使用options(scipen = 0, digits = 2)
(如在link上),但我只想控制输出的特定部分。
类似的,未回答的问题:Inline knitr print code not printing
答案 0 :(得分:1)
print()
中解释了print(x)
不起作用的原因。此外,请注意invisible(x)
经常会返回x
,因此传递给 knitr 的实际值仍为digits = 2
,print()
无意义。 print(x)
通常仅用于其副作用(在控制台/终端中打印),并且不会修改传递给它的值。总结一下:
invisible(x)
返回print(x, digits = 2)
,因此 knitr 忽略了它; x
未将print()
作为返回值进行舍入,因此您无法通过round()
获得所需的位数。 formatC()
,sprintf()
和<%= link_to "Delete", user_path(user), data: { confirm: "Are you sure?"}, method: :delete %>
都是格式化数字的正确方法。