通过sagetex和Sweave将sage变量值分配给R对象

通过sagetex和Sweave将sage变量值分配给R对象,r,latex,sage,R,Latex,Sage,我正在编写一个简短的Swave文档,输出到Beamer演示文稿中,在该文档中,我使用sagetex软件包求解beta二项分布中两个参数的方程,我需要将参数值分配到R会话中,以便对这些值进行额外处理。下面的代码摘录显示了我是如何与sage交互的: <<echo=false,results=hide>>= mean.raw <- c(5, 3.5, 2) theta <- 0.5 var.raw <- mean.raw + ((mean.raw^2)/t

我正在编写一个简短的Swave文档,输出到Beamer演示文稿中,在该文档中,我使用sagetex软件包求解beta二项分布中两个参数的方程,我需要将参数值分配到R会话中,以便对这些值进行额外处理。下面的代码摘录显示了我是如何与sage交互的:

<<echo=false,results=hide>>=
mean.raw <- c(5, 3.5, 2)
theta <- 0.5  
var.raw <- mean.raw + ((mean.raw^2)/theta)
@

\begin{frame}[fragile]
\frametitle{Test of Sage 2}
\begin{sagesilent}
var('a1, b1, a2, b2, a3, b3')
eqn1 = [1000*a1/(a1+b1)==\Sexpr{mean.raw[1]}, ((1000*a1*b1)*(1000+a1+b1))/((a1+b1)^2*(a1+b1+1))==\Sexpr{var.raw[1]}]
eqn2 = [1000*a2/(a2+b2)==\Sexpr{mean.raw[2]}, ((1000*a2*b2)*(1000+a2+b2))/((a2+b2)^2*(a2+b2+1))==\Sexpr{var.raw[2]}]
eqn3 = [1000*a3/(a3+b3)==\Sexpr{mean.raw[3]}, ((1000*a3*b3)*(1000+a3+b3))/((a3+b3)^2*(a3+b3+1))==\Sexpr{var.raw[3]}]
s1 = solve(eqn1, a1,b1)
s2 = solve(eqn2, a2,b2)
s3 = solve(eqn3, a3,b3)
\end{sagesilent}

Solutions of Beta Binomial Parameters:
\begin{itemize}
\item $\sage{s1[0]}$
\item $\sage{s2[0]}$
\item $\sage{s3[0]}$
\end{itemize}
\end{frame}
=

mean.raw哇,你真是把两个世界混在一起了;)

我能给出的唯一想法是solve命令的“solution\u dict=True”参数。然后您会得到一个Python字典,它可能会帮助您只输出值。但我不知道Swave到底做了什么,也不知道过程中的哪一步重写了什么

一般来说,如果您只使用sagetex编写它,并通过rpy2python包装器调用R,可能会更好。但这对你来说可能太多了——也许只是一张幻灯片,然后通过一些pdf合并将它们缝合在一起