控制内联编织器的数字印刷

时间:2017-03-16 15:10:50

标签: r knitr

我正在开发一个针对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

1 个答案:

答案 0 :(得分:1)

print()中解释了print(x)不起作用的原因。此外,请注意invisible(x)经常会返回x,因此传递给 knitr 的实际值仍为digits = 2print()无意义。 print(x)通常仅用于其副作用(在控制台/终端中打印),并且不会修改传递给它的值。总结一下:

  1. invisible(x)返回print(x, digits = 2),因此 knitr 忽略了它;
  2. x未将print()作为返回值进行舍入,因此您无法通过round()获得所需的位数。
  3. formatC()sprintf()<%= link_to "Delete", user_path(user), data: { confirm: "Are you sure?"}, method: :delete %> 都是格式化数字的正确方法。