gpt4 book ai didi

R/Sweave 用科学记数法中的\Sexpr{} 格式化数字

转载 作者:行者123 更新时间:2023-12-03 20:42:56 26 4
gpt4 key购买 nike

我刚开始用Sweave/R写一些文档我喜欢 \sexpr{}命令,让一个拖把直接在文本中写入数字。

如果我有一个像 mus=0.0002433121 这样的号码,我可以说四舍五入到小数位,例如

\Sexpr{round(mus,7)}

如何用科学记数法表示,即 LaTeX会输出
2.43 \times 10^{-4} 

在这个例子中,我们可以像 3 一样控制要输出的有效数字的数量吗?

我注意到像 sigma = 2000000 这样的数字自动写入 2e + 06如果我指定
\Sexpr{round(sigma,2)}. 

我宁愿它写成
2 \times 10^6 

与我们在 LaTeX 中得到的相同符号,也许让我们也可以控制有效数字的数量。

如何实现这一目标?

最佳答案

我认为这个功能应该有效:

sn <- function(x,digits)
{
if (x==0) return("0")
ord <- floor(log(abs(x),10))
x <- x / 10^ord
if (!missing(digits)) x <- format(x,digits=digits)
if (ord==0) return(as.character(x))
return(paste(x,"\\\\times 10^{",ord,"}",sep=""))
}

一些测试:
> sn(2000000)
[1] "2\\\\times 10^{6}"
> sn(0.001)
[1] "1\\\\times 10^{-3}"
> sn(0.00005)
[1] "5\\\\times 10^{-5}"
> sn(10.1203)
[1] "1.01203\\\\times 10^{1}"
> sn(-0.00013)
[1] "-1.3\\\\times 10^{-4}"
> sn(0)
[1] "0"

如果你想要数学模式的结果,你可以输入 $签到 paste()称呼。

编辑:

这是一个 Sweave 示例:
\documentclass{article}

\begin{document}
<<echo=FALSE>>=
sn <- function(x,digits)
{
if (x==0) return("0")
ord <- floor(log(abs(x),10))
x <- x / 10^ord
if (!missing(digits)) x <- format(x,digits=digits)
if (ord==0) return(as.character(x))
return(paste(x,"\\\\times 10^{",ord,"}",sep=""))
}
@

Blablabla this is a pretty formatted number $\Sexpr{sn(0.00134,2)}$.

\end{document}

关于R/Sweave 用科学记数法中的\Sexpr{} 格式化数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8366324/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com