knitr:带正号的正数前

时间:2016-06-05 15:10:18

标签: r knitr

我使用knitr直接从R输出中获取LaTeX拉数,例如,使用\Sexpr{res$a[1]}\Sexpr{res$a[5]}。有没有办法在带正号的正数之前自动添加?当然,我可以手动为相关数字添加加号,但这似乎打败了knitr的目的。

1 个答案:

答案 0 :(得分:3)

很抱歉我花了一段时间才回到这里。事实证明这比我想象的要容易。 knitr似乎没有自己的选项来控制打印选项。相反,它依赖于R会话中的选项。

现在考虑以下事项:

x <- 5.1234567899876543

x
[1] 5.123457

options()$digits
[1] 7

因此,数字打印到控制台的方式(部分)由options("digits")决定。现在,看看当我们将format函数应用于x并使用所有默认参数时会发生什么:

format(x)
[1] "5.123457"

当我们简单地打印x时,我们得到一个与表示匹配的字符串。让我们利用这一点来实现我们的利益:

with_plus <- function(x, ...)
{
  if (x > 0)
  {
    sprintf(
      fmt = "+ %s", 
      format(x, ...)
    )
  }
  else
  {
    x
  }
}

with_plus(x)
[1] "+ 5.123457"

现在你有一个功能,在默认设置下,它将以与它们在控制台中出现的方式相同的方式打印数字,但使用&#34; +&#34;前面是正数。使用format,您还可以根据需要灵活调整各个值。