Hello Naresh, Many thanks for sharing. If I'm looking for efficiency, I tend not to use noweb and use an R session instead.
One reason is that caching does not work with noweb #+name: test #+begin_src R :cache yes :session *R* Sys.sleep(10) a <- 1 #+end_src #+RESULTS[36c41617bf9aa447ecc28fca8207eab38340d418]: test : 1 #+name: add1 #+begin_src R :noweb yes :cache no :session *R* <<test>> a + 1 #+end_src #+RESULTS: add1 : 2 I would proceed in the following way #+name: connection #+begin_src R :exports results :results output :session *R* ## my code here #+end_src #+begin_src R :exports results :results output graphics file :session *R* :file figures/fig1.png ## my code here #+end_src #+begin_src R :exports results output graphics file :file figures/fig2.png :session *R* ## my code here #+end_src this will require running the first code chunk once only to run the rest On Thursday, 7 Jul 2022 at 09:22, Greg Minshall wrote: > you'd have to be careful to not get bitten by the code > *not* being evaluated, and by it being evaluated too often. (probably > too clever by half.) The comment of Greg is very relevant here as you'll have to manage updates yourself, and it can get complex very quickly. A potential pitfall is when the tables in database you are referring to, change. So in this case I would avoid using :cache yes in the first code chunk I'm also tempted to adopt the following organization * setup table #+name: connection #+begin_src R :exports results :results output :session *R* ## my code here #+end_src * output graphs :PROPERTIES: :header-args:R: :exports results output graphics file :session *R* :END: #+begin_src R :file figures/fig2.png ## my code here #+end_src #+begin_src R :file figures/fig1.png ## my code here #+end_src then I would use (org-babel-execute-subtree) which is bound to C-c C-v s on the subheading output graphs to regenerate the graphs. HTH, Jeremie