Graham -

Graham Smith wrote:
Below is a function that I am trying to run in orgmode/babel.

It seems to run OK, but instead of printing out three values, its only
printing the final result.

Once again, i would appreciate some help with what I am missing.

Thanks,

Graham


#+srcname: CI_function
#+begin_src R :session daf
summary.ci<-function(x){
xbar<-mean(x)
sigma<-sd(x)
n<-length(x)
sem<-sigma/sqrt(n)
lower.ci<-xbar+sem*qnorm(0.025)
upper.ci<-xbar+sem*qnorm(0.975)
print (xbar)
print  (lower.ci)
print  (upper.ci)
}
#+end_src

#+srcname: SumFlowering2005
#+begin_src R :session daf
summary.ci(daf$Flower[daf$YEAR=="2005"])
#+end_src

#+results: SumFlowering2005
: 1.97860201016947


From org-babel docs...

The following options are mutually exclusive, and specify how the results should be collected from the source code block.

------------------------------------------------------
value
This is the default. The result is the value of the last statement in the source code block. This header argument places Org-babel in functional mode. Note that in some languages, e.g., python, use of this result type requires that a return statement be included in the body of the source code block. E.g., :results value.

output
The result is the collection of everything printed to stdout during the execution of the source code block. This header argument places Org-babel in scripting mode. E.g., :results output.
-------------------------------------------------------

So, add ":results output" to your source header block.

Or, you might want to define your R function to return a list of the three components you're after for further processing, and then not have to include ":results output"

Instead of the 3 print statements, which don't create objects, you could substitute

list(xbar, lower.ci, upper.ci)

--Erik



_______________________________________________
Emacs-orgmode mailing list
Please use `Reply All' to send replies to the list.
Emacs-orgmode@gnu.org
http://lists.gnu.org/mailman/listinfo/emacs-orgmode

Reply via email to