2010-06-05 38 views
2

我正在写一个简短的Sweave文档,输出到Beamer演示文稿中,其中我使用sagetex软件包为beta二项式分布中的两个参数求解方程,并且我需要将参数值分配到R会话中,以便对这些值进行额外的处理。下面的代码片段显示了我如何与圣人互动:通过sagetex和Sweave将Sage变量值分配到R对象

<<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} 

一切编译就好了,并在该幻灯片,我能看到解决方案的三个方程相应的参数,在逐项列表(例如第一从该投影仪幻灯片的项目列表中的项目输出为[a1=(328/667), b1=(65272/667)](我不能张贴投影仪幻灯片的图像,但我希望你明白了)

我想将参数值a1,b1,a2,b2,a3,b3保存到R以便我可以在模拟中使用它们在sagetex包中找不到关于如何将来自sage命令的输出保存到用于其他程序的变量中的任何文档(在这种情况下是R)。有关如何将这些值写入R的任何建议?

回答

1

哇,你真的混合两个世界;)

唯一的想法,我可以给你的是“solution_dict =真”为解决命令参数。然后你得到一个Python字典,它可以帮助你输出值。但我不知道Sweave究竟做了什么,以及流程的哪一步重写了什么。

通常情况下,如果只写入sagetex并通过rpy2 Python包装函数调用R可能会更好。但是,这可能对你来说太多了 - 也许只是一张幻灯片,然后通过一些pdf合并将它们缝合在一起?